OSI七层和TCP/IP四层的关系

OSI七层模型是理论上的分层方式,而四层模型是实践过程中的分层模型。

OSI七层模型ISO(国际标准化组织)提出的一套理论性的网络标准化协议,可以把它看成一本教科书,它在指定之前是没有经过实践的,而为什么我们实践的过程中又没有遵循OSI的标准来分层呢,是因为我们在实践的过程中发现有些功能不必要分得那么细,而TCP四层模型就是我们实践过程中发现比较合理的分层,虽然我们实际过程中都没有按OSI分为七层,但是OSI对我们实践过程分层有着指导性的意义。

对应关系图如下:

相同点:
1.ISO/OSI参考模型和TCP/IP参考模型都采用了层次结构的概念;
2.都能够提供面向连接(TCP协议)和无连接(UDP协议)两种通信服务机制。

不同点:
1.前者是七层模型结构,后者是四层模型结构;
2.对可靠性要求不同,TCP/IP参考模型的要求更高;
3.ISO/OSI参考模型是在协议开发之前设计的,具有通用性;TCP/IP参考模型则是在协议集已有的情况下建立的,不适用非TCP/IP网络;
4.实际市场应用不同, ISO/OSI参考模型只是理论上的模型,并没有成熟的产品支持;而TCP/IP参考模型已经成为“实际上的国际标准”;

TCP/IP 协议

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

TCP/IP协议定义了计算进行网络通信的过程一套处理标准,该标准定义了计算机在网络中如何发送数据、数据格式如何定义、发出消息后在网络中如何寻址找到目标计算机,最后目标计算机又如何检验收到消息的正确性、对数据拆解最后得到消息内容。

TCP/IP三次握手

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,建立连接后开始传输数据。

1.TCP报文格式


上图中有几个字段需要重点介绍下:
(1)序号:Seq序号,长度占32位。用来表示TCP源端向目的端发送的发送的字节流,发送方发送时对此进行标记。
(2)确认序号:ack序号,长度占32位。当标志位ACK为1时,确认序号才有效。ack=seq+1。
(3)标志位:共六个。即URG、ACK、RST、PSH、SYN、FIN等。具体含义如下:
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
RST:重置连接。
PSH :接收方应该尽快将这个报文交给应用层。
SYN:发起一个新连接。
FIN:释放关闭一个连接。
需要注意的是:
(1)不要将确认序号的ack和标志位的ACK搞混了。
(2)确认方ack=发起方seq+1,两端配对。

2.TCP三次握手

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端与服务端之间发送3个数据包以确认连接的建立,确认后创建连接才传输数据。整个流程如下图所示:

(1) 第一次握手:Client端发起建立连接请求,标志位SYN置为1,随机生成一个序号值seq=J,将数据包发给Server,Client进入SYN_SENT状态,等待Server端确认。
(2) 第二次握手:Server接收到请求数据包后由标志位SYN=1知道Client需要建立连接,Server将标志位SYN和ACK都置为1,再随机生成一个序号值seq=k,将数据包发给Client端以确认连接,Server进入SYN_RCVD状态。
(3) 第三次握手:Client收到确认后,检查数据包的SYN和ACK标志位是否为1,ack序号是否等于为J+1,如果是则将ACK标志位置为1,ack序号值等于k+1,发送给Server端,Server端接收到后检查ACK标志位是否等于1和ack序号值是否等于k+1,验证完毕建立连接完成,Client和Server进入ESTABLISHED状态,完成三次握手,随后双方可以相互传输数据。

3.为什么要三次握手

为了避免服务端开启一些无用的连接造成资源浪费以及防止已失效的请求数据报文又突然到达服务端,因而产生错误。
由于网络传输是有延迟的(通过光缆或和各种中间代理服务器),在传输的过程中,客户端发起标志位SYN=1创建连接的请求,假如服务端接收到了这个请求开启连接socket端口并且返回确认连接,标志位ACK和SYN都置为1和seq等内容的数据包返回给客户端,这时候因为网络原因导致这个数据包没有到达客户端,数据包丢失了,客户端可能设置了一个超时时间,超时了就关闭了建立连接的请求。重新发起建立连接请求,而服务端是不知道的,因为没有通过第三次握手告诉服务端客户端收到确认连接数据包的话,服务端是不知道客户端有没有接收到返回信息的。由于客户端没有给服务端创建还是关闭端口的请求,这个端口就这样一直这样开着,如果后续还有新的建立连接请求,就会造成服务器端开销的浪费。

也可以这样理解:“第三次握手”是客户端向服务器端发送数据,这个数据就是要告诉服务器,客户端有没有收到服务器“第二次握手”时传过去的数据。若发送的这个数据是“收到了”的信息,接收后服务器就正常建立TCP连接,否则建立TCP连接失败,服务器关闭连接端口。由此减少服务器开销和接收到失效请求发生的错误。

4.TCP四次挥手

所谓四次挥手(Four-Way Wavehand )即终止TCP连接,就是断开TCP连接,需要客户端和服务端总共发起4个数据包来确认关闭连接。这一过程可由客户端或服务端一方发起断开请求,下面是客户端向服务端发起请求连接断开连接过程图:

由于TCP连接是全双工的,因此,每个方向都需要单独关闭,这一原则是当一方完成数据传输任务后,发起FIN标志位请求断开连接,代表这一方不会再有数据流动了,即另一方不会再收到数据了,但是TCP连接上仍然能够继续发送数据,直到另一方也发起FIN标志位,首先主动关闭的一方将执行主动关闭,另一方则被动关闭连接。上图的描述即使如此
(1) Client发送一个标志位FIN和seq序号u给Server,关闭与Server的连接,Client进入FIN_WAIT_1状态。
(2) Server收到Client关闭请求,将ACK标志位置为1和ack确认序号u+1以及seq值v数据包发给Client,Server进入CLOSE_WAIT状态,Client接收到进入FIN_WAIT2状态。
(3) Server发送标志位FIN=1和ACK=1以及确认序号ack=u+1和序号seq值w数据包发给Client,Server进入LAST-ACK状态。
(4) CLient收到Server确认可以关闭请求,将标志位ACK=1和确认序号ack=w+1以及seq值u+1数据包发给Server,client进入TIME-WAIT状态,Server 收到 Client 的 ACK 报文段以后,就关闭连接。此时,Client等待2MSL后依然没有收到回复,则证明 Server 端已正常关闭,那好,Client 也可以关闭连接了。

下面开始介绍四层模型每层的作用以及整体是如何实现通信的,通信的整体结构、数据封装的格式图:


以访问浏览器访问网址www.baidu.com例子来说 本机位左边发送端 baidu为接收端
访问域名网站属于web服务,所以数据报文格式属于http协议
1.应用层封装HTTP请求报文数据
2.传输层添加TCP首部数据,TCP首部数据写入请求源端口和目的应用服务端口号
3.网络层对访问域名进行网络寻址获取目标服务器IP地址,写入IP首部
4.链路层封装本地MAC物理地址以及目标MAC地址写入以太网首部
5.通过网络运营商例如电信、移动将数据包传输到baidu的物理服务器网络内,可能会先到达前端路由机,再到真实的目标服务器。
6.到达baidu服务器链路层,将数据包逐层逐层拆开,首先拆开以以太网首部,得到MAC地址,因为内部网络都是通过MAC地址来通信的,外部通信才使用的IP地址,通过MAC地址找到web服务器将数据包传递。
7.接着拆开IP首部确认访问的目标IP是本地的服务器IP,否则直接丢弃或者进行其他路由转发。
8.继续拆开TCP首部得到服务的端口号,首先排查本地是否有存在监听该端口号的服务,有则将应用请求http报文交给应用服务处理,没有则直接丢弃。
9.应用层处理封装响应http报文以同样方式回传给源发起端。

本文是自己需要提升一下自己对的TCP/IP协议四层模型知识储备,从而学习分析并分享学习心得顺便巩固所学,如有问题或者更好的意见和建议欢迎指出,共同进步~~~

TCP/IP协议四层模型知识相关推荐

  1. TCP/IP协议 | 四层模型

    目录 TCP/IP四层模型 TCP/IP格式 IP包格式 TCP报文 UDP数据段 SYN攻击 HTTP协议 ICMP协议 子网掩码 长连接与短连接的区别 TCP Fast Open TCP报文如何传 ...

  2. TCP/IP协议四层模型

    TCP(传输控制协议)/IP(网际协议) 简介 TCP/IP协议是一系列网络协议的总和:包括:TCP,IP,UDP,ARP等,这些被称为子协议.在这些协议中,最重要.最著名的就是TCP和IP.因此,大 ...

  3. OSI七层模型和TCP/IP协议四层模型

    1 OSI 七层模型 OSI (open System Interconnect  开放系统互联)七层网络模型 称为开放式系统互连参考模型,是一个逻辑上的定义,一个规范,他把网络从逻辑上分为7层.每一 ...

  4. (chap2 TCP/IP基础知识) TCP/IP协议分层模型

    1. TCP ( Transmission Control Protocol)和IP( lnternet Proto-col )通信协议群 1.1 Internet互联网 互联网中的每个网络都是由骨干 ...

  5. TCP/IP协议分层模型详解

    文章目录 不同分类模型对应关系 不同人员关注的模型不一样 每层的简述 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 数据包传输过程 数据包传输调用关系 数据包发送 数据包接收 各层协议 ...

  6. (chap2 TCP/IP基础知识) TCP/IP协议分层模型-应用层

    应用层--会话层以上的分层 1. C/S模型 2. WWW (World Wide Web) WWW 中的HTTP是OSI应用层的协议,HTML属于表示层的协议. 3. 电子邮件 SMTP (Simp ...

  7. OSI七层模型及TCP/IP网络四层模型

    文章目录 前言 一.OSI七层模型 二.TCP/IP四层参考模型 总结 前言 网络的参考模型,ISO七层模型.TCP/IP四层模型等,我跟大家一样也只是草草的了解,并没有全面的掌握,今天学习一波. 一 ...

  8. 【网络原理】TCP/IP协议五层模型

  9. tcp ip协议_网络通信-TCP/IP协议族简述

    导读:计算机与网络设备要相互通信需要遵守同样的规则.例如,如何找到通信目标.该使用哪种语言通信.怎么结束通信等规则.不同的硬件.操作系统之间的通信都需要遵循同一种规则,这种规则也称为是协议.下面本文主 ...

最新文章

  1. 《大数据、小数据、无数据:网络世界的数据学术》一 导读
  2. 深度学习(十一)RNN入门学习
  3. Alibaba Cloud Toolkit——简介
  4. Hibernate 注解配置
  5. android 多个占位符,Android中占位符的使用
  6. 自己常用的Linux命令总结
  7. php设置文件权限问题,php如何设置文件权限
  8. 雷军发布会罕见爆粗口:这XXX绝对是来捣乱的!
  9. css3如何链如外部字体,微信小程序引入外部字体总结(针对安卓加载缓慢问题)...
  10. 797. 差分(有图解)
  11. ajax angular点击事件_Angular的$http的ajax的请求操作(推荐)
  12. 华为设备IS-IS路由控制原理与实验
  13. vsbutton中的集合编辑器怎么打开_理工科学生的好帮手,EdrawMath数学公式编辑器...
  14. 利用ExcelJS读取Excel文件
  15. ARM、DSP、FPGA比较——非常详细深入
  16. 计算机删除内置用户,如何删除windows的内置账户,administrator
  17. 个人修改机智云apk之出现couldn‘t find “libSDKLog.so“错误导致机智云apk在真机上调试出现keeps stopping错误解决方法
  18. struts2学习1
  19. 基于PID的车辆ABS建模与仿真
  20. [R语言] WGCNA入门教程

热门文章

  1. 暴风影音使用的小技巧
  2. 魔乐科技安卓开发教程----李兴华----19 传感器
  3. 生成 App 专用密码 [How to generate an app-specific password]
  4. 美洽在线客服系统UTM帮助文档
  5. Ubuntu20.04软件主要管理工具包详细介绍:离线安装dpkg、在线安装apt、源码安装(适用于Github程序下载)
  6. win10使用自带工具进行硬盘测速
  7. 文本导入数据到oracle_如何将文本文件导入到Oracle数据库中 ?
  8. 计算机毕业设计ssm校园二手书交易平台
  9. python机票_某哪儿机票JS解密(3)--python调用node产生正确的航线和pre
  10. pta 编程团体赛(C语言实现)