1.TCP协议
传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一个面向连接,可靠的,基于字节流传输层通信的协议,也是TCP/IP协议里比较复杂的一个协议。在简化的OSI网络模型中,TCP协议是工作在传输层上的协议。
2. TCP协议的特点
TCP协议的特点:
1. 数据在网络中传输的时候必定要经过传输层,而TCP协议对于数据在网络中通信传输,必须在通信前建立连接,然后数据传输完毕必须把连接关闭,就好比你要给你朋友打电话一样,必须先拨号建立连接,然后打完电话后又要挂断电话关闭连接。
2. TCP提供的可靠服务也就是说,TCP保证传输的数据到达目的地。
3. TCP协议对于要发送的应用数据是基于字节流的。
4. 要传输的内容需要分成多个数据包来传输。
3. TCP对数据封装过程
TCP对于分段及封装应用层发送的数据:
TCP协议对于要发送的应用数据是基于字节流的,在应用层会对要发送的应用数据进行封装以及分段成合适的数据段,另外还会对字节数据进行随机编号,也就是每一个字节数据都会有一个编号,这个编号就叫字节号。对于分段的数据,每个分段数据也有一个编号,这个编号叫序号,一般序号是每个分段数据的第一个字节的字节号。
然后对数据封装进行封装后往往下传输,即数据根据简化的OSI网络模型从上往下每传输一层的时候,在传输前,对每一个数据包都会进行封装传输层的首部信息。
图1-TCP协议对应用数据封装过程
我们可以看到用户数据在应用层会加上应用层的首部往下传输,到传输层又会加上tcp的首部传输,到网络层再加上ip首部,在网络接口层加上以太网首部形成以太网数据帧,从这个过程不难看出,发送的数据每经过一层都要进行对应的首部封装。
4. 端到端服务
图2-端到端服务
上图中的5,4,3,2,1分别对应应用层,传输层,网络层,网络接口层,物理层。
比如当前主机A要跟主机B通信,主机的应用AP1发送了一个数据给主机B的AP3,那么主机A是怎么确定要发送的数据是给主机B的应用AP3的呢?
首先主机A的应用AP3在发送数据时会从简化的OSI模型中从上往下一层一层的传输,AP1从应用层传到传输层会加上TCP的首部和尾部封装成TCP数据段报文,再往下传输到网络层会加上IP的首部和尾部封装成IP数据报文,然后传输到网络接口层会加上以太网帧头和帧尾封装成以太网数据帧,在网络中经过一个个路由器,最终传输到目的主机。
从中来看,整个传输过程就是对数据不断的进行层层封装后在网络上传输经过一个个路由节点,然后主机B接收到封装后的数据,对数据进行重组再往上传输,这个过程就是对数据进行封装和解封,当数据传输到网络层要把数据报的帧头和帧尾去掉,然后传输到传输层时把IP首部和尾部去掉,传输到应用层再把TCP的首部和尾部去掉,最后把正真的数据发送给指定的应用进程AP3。
AP1进程是怎么知道数据是发送给AP3进程的呢?
前面我们忘说了一点,数据在传输层封装时,同时封装了目的主机的IP地址和端口号,这样数据在传输过程中可以根据IP地址确定网络中的一台计算机,然后再根据端口号可以确定计算机中的某一个程序,也就是通过IP地址+端口号来确定数据是要发送给哪一台主机的哪一个程序。
也就是说传输层是通过端口号来识别应用层的,这就是所谓的传输层TCP端到端服务。