码迷,mamicode.com
首页 > 其他好文 > 详细

路由交换03-----传输层协议

时间:2018-07-20 11:21:33      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:时间   ack   建立连接   开始   表示   src   面向连接   info   数据传输   

传输层协议

传输层比较重要的两个协议是TCPUDP协议。
1.TCP
TCP是一种可靠的、面向连接的全双工传输层协议。
TCP的报文格式是这样的:
技术分享图片
源端口(2字节):源主机应用程序使用的端口号。源端口和IP地址用作标识报文的返回地址。
目的端口(2字节):目的主机应用程序使用的端口号。
序号(4字节):seq序号,标识发送方向接收方发送的数据段的序号。
确认序号(4字节):Ack序号,接收方应答的序号,为接受到的序号+1。
头长度(4字节):表示i头部占4字节的数目。
URG:是否为紧急指针,0为不是,1为是。
ACK:请求或者应答连接,用于确认序号有效。
PSH:最快速度传输数据。
RST:重建会话。
SYN:同步连接序号,用于建立连接。
FIN:结束连接,为0是请求结束连接,为1是结束连接。
窗口大小(2字节):接收方告诉发送方想接收到的每个数据段的大小,可用于流量控制。
校验和(2字节):对头部和数据进行校验。
紧急指针:当URG为1时生效,表示这个数据是紧急数据,优先发送。
选项:用于记录路由或者时间戳之类的可选任务。

TCP传输数据分为三个过程:建立连接、传输数据、关闭连接。
建立连接的过程是一个三次握手的过程,首先,客户端发送一个标识为SYN,序列为seq=a的数据包,服务器端收到后,要对这个包进行确认,便回复一个SYNACKAck=a+1seq=b的数据包,客户端收到这个包之后,进行确认,回复一个ACKseq=a+1Ack=b+1的包,这样就建立连接了。
注意:ACK是标志位的,用于确认序号有效。Ack是确认序号,是seq+1
接着就开始传输数据。
数据传输结束后开始进行关闭连接,即TCP四次挥手。假设客户端想终止这个连接,于是发送一个数据包:FINACKseq=a,服务器端收到之后,进行确认回复ACKseq=bAck=a+1,确认完客户端的终止连接之后,服务器端再进行终止连接,向客户端发送数据包为:FINACKseq=bAck=a+1,客户端收到之后,知道服务器端也终止连接然后进行确认回复:ACKseq=a+1Ack=b+1,这样会话就关闭了。

2.UDP
UDP是一种不可靠的、无连接的传输层协议,他不像TCP一样需要三次握手四次挥手,UDP不需要事先建立连接,因此也无法保证数据的可靠。
UDP报文的头部是这样的:
技术分享图片
源端口(2字节):初始化通信的端口号。
目的端口(2字节):接收方应用程序的地址接口。
UDP数据包长度(2字节):UDP头和数据的总长度。
校验和(2字节):数据包的头部和包内容的校验。

使用UDP发送数据时,应用程序需要提供报文到达确认、排序、流量控制等功能,UDP没有像TCP一样的重传机制,占用资源小,处理效率高。一般用来传输语音、视频等。

对比
技术分享图片

路由交换03-----传输层协议

标签:时间   ack   建立连接   开始   表示   src   面向连接   info   数据传输   

原文地址:https://www.cnblogs.com/Timesi/p/9337488.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!