协议系列之TCP/IP协议

简介: 根据前面介绍的几种协议,将IP协议、TCP协议、UDP协议组合起来,于是便有了TCP/IP协议。现在很多的应用的通信都是建立在TCP/IP协议的基础上,运用非常广泛,很有必要对其学习一下。

根据前面介绍的几种协议,将IP协议、TCP协议、UDP协议组合起来,于是便有了TCP/IP协议。现在很多的应用的通信都是建立在TCP/IP协议的基础上,运用非常广泛,很有必要对其学习一下。

打个不太恰当的比方,TCP/IP协议可以看成是邮局与邮递员的关系(实际TCP/IP协议族会包含四层,应用层、传输层、网络层、链路层)。这个协议族中的IP协议定位到哪台计算机,而具体到这台计算机的哪个端口(应用程序)就需要TCP协议,一个属于网络层,一个属于传输层,互相依赖,提供有效的解决通信问题的措施。这就好比在90年代,你写一封情书给你远方的情人,情书先从寄出邮局被送往目的地邮局,接着当地可爱的邮递员把情书送给你的情人同志手上,你俩感情得到升温。

图2-2-5-1,TCP/IP协议其实还包含了UDP协议,即由TCP、IP、UDP三个协议组成。此图展示了TCP/IP协议的通信模型,左边是主机A,通过通信信道(一般是以太网)跟主机B进行通信。假设主机A的应用程序要发送数据到主机B的应用程序,主机A的应用程序会通过socket的API访问TCP协议、UDP协议提供的服务,再通过IP协议,利用TCP/IP协议以通信信道为介质与主机B建立起连接,传送到主机B的数据依次经过IP协议层、TCP协议层,被主机B的应用程序接收。

图2-2-5-1   TCP/IP通信模型

   

这里四层中每一层的功能都不一样。应用层主要发送用户的应用数据,由系统调用交给运输层处理;运输层负责建立连接,分割数据发送,释放连接,数据重组及错误处理;网络层负责确定将数据发送到哪个路由。链路层主要是对二进制用户数据进行传输校验。下面从不同角度来说明每个层次的区别:

(1)     运行进程态。应用层运行在用户程序进程中,属于用户态;其它三层运行在系统内核进程,属于核心态。

(2)     通信方式。传输层是进程与进程之间的通信,是端对端的;网络层是机器与机器之间的通信,是点对点的。

(3)     传输数据单元。传输层上是TCP或UDP报文段;网络层上是IP数据报文;数据链路层是帧数据。

(4)     寻址方式。网络层通过IP寻址;链路层通过MAC寻址(传输层通过端口寻址;一般而言MAC地址是世界唯一的、不变的,计算机通信其实是靠MAC地址,而非IP地址,但MAC地址不能变,不灵活,所以应用层用IP进行寻址)。

 

以图2-2-5-1,分解这四层数据传输的流程:

①  主机A的应用层组织好数据,发给传输层,并调用系统API通知TCP建立连接。

②  主机A传输层接收应用层数据,组织好TCP报文,发送给网络层,进行连接建立,其中会加上目标跟源端口。

③  主机A网络层接收传输层TCP数据,组织好IP报文,发送给链路层,其中会加上目标跟源IP地址。

④  链路层接收网络层数据,组装好链路报文,其中会加上MAC地址。

⑤  链路数据由网卡发送,根据目标IP找到最近的路由器的MAC地址,将数据包发往它,由它确定下一个路由,最终将数据包发送到主机B的网卡。

⑥  主机B的网络层获取IP数据包,根据IP协议拆包。

⑦  主机B的传输层获取TCP数据包,根据TCP协议拆包。

⑧  主机B应用层获取TCP拆包后的数据包进行解析,完成相应的业务逻辑处理。

在这四个层中,数据报文的的变化可以简单用图2-2-5-2表示,应用层的数据到达传输层后,会被TCP协议打包数据(此图假设使用TCP协议),这是会添加一个TCP头部报文,而应用层数据被封装成TCP报文体。继续往下到网络层,TCP报文又被IP协议打包,这时添加了一个IP头部报文,整个TCP报文被封装成IP报文体。最后到达链路层,IP报文被链路相关协议打包,这时添加了帧头部报文和帧尾部报文,整个IP报文被封装成链路协议的报文体。

图2-2-5-2 TCP/IP四层数据的封装

 

对于我们研究服务器,需要对传输层与网络层的报文比较深入理解,下面以一个更加详细的图对传输过程中TCP与IP报文组合进行说明。根据TCP缓冲大小,会被分成一个个TCP分段,每个分段都由IP分组与TCP段组成。在前几章已经对IP协议报文结构详细说明,这里不再赘述,IP报文的选项区域会被装入TCP报文,这样就把TCP报文嵌进IP报文,即可利用IP协议进行发送传输数据。

图2-2-5-3 TCP/IP协议报文




==========广告时间==========

鄙人的新书《Tomcat内核设计剖析》已经在京东预售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

=========================

目录
相关文章
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
293 4
|
5月前
|
网络协议
TCP/IP与OPC协议的深度比较
总的来说,TCP/IP和OPC协议各有其优点和应用场景。TCP/IP协议是网络通信的基础,而OPC协议则是工业自动化领域的重要工具。在实际应用中,我们需要根据具体的需求和场景,选择合适的协议。
159 11
|
10月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
182 13
|
10月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
696 3
|
10月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
11月前
|
网络协议 算法 数据格式
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
643 3
|
11月前
|
XML JSON 网络协议
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
227 3
|
12月前
|
网络协议 网络架构 数据格式
TCP/IP基础:工作原理、协议栈与网络层
TCP/IP(传输控制协议/互联网协议)是互联网通信的基础协议,支持数据传输和网络连接。本文详细阐述了其工作原理、协议栈构成及网络层功能。TCP/IP采用客户端/服务器模型,通过四个层次——应用层、传输层、网络层和数据链路层,确保数据可靠传输。网络层负责IP寻址、路由选择、分片重组及数据包传输,是TCP/IP的核心部分。理解TCP/IP有助于深入掌握互联网底层机制。
1350 2
|
网络协议 安全 网络安全
网络 (TCP/IP 四层协议中常见网络协议)
网络 (TCP/IP 四层协议中常见网络协议)
206 7
|
网络协议 网络架构
计算机网络——计算机网络体系结构(1/4)-常见的计算机网络体系结构(OSI体系、TCP/IP体系、原理体系五层协议)
计算机网络——计算机网络体系结构(1/4)-常见的计算机网络体系结构(OSI体系、TCP/IP体系、原理体系五层协议)
378 0