您的位置:首页 > 理论基础 > 计算机网络

网络编程(2):TCP、UDP协议详解

2017-02-21 17:50 363 查看
UDP协议

UDP Header、UDP伪 header、校验和
UDP协议特点:差错检测
IP分组与重组

TCP协议

TCP Header
TCP协议特点

差错检测
差错纠正
队列管理
重复消除
流量控制
拥塞控制

TCP生命周期器

TCP三次握手连接(三次握手)
TCP四个握手断开连接(四次分手)
TCP数据传输

1、UDP协议
UDP是面向无连接、不可靠的传输层协议,它本质上就是在IP协议上添加了差错检测、超时重传、IP分组与重组等轻量级的功能组成的。
它的传输速度十分快,但不考虑网络的状态与对其他用户网络的消极影响。但它也非常适合应用于实时要求高的场景。
它是面向无连接的、不可靠的,因为数据报文是直接发送,并且不关心是否发送成功,而接收端则关心是否能收到数据包和数据报文正确与否。

1.1、UDP头、UDP伪头、校验和
UDP头 & UDP伪头:

UDP头的定义如下结构:





UDP Header一共8个字节,也比较简单。因为是传输层是面向端口传输编程,所以头里面有源端口号、目的端口号用于表明是哪个程序在收发。

UDP头 & UDP伪头的结构:





伪头的作用只是仅仅是用户校验和的的计算,实际上不传送出去(传送到别的层),让UDP层能验证数据是否正确到达目的地。

校验和:

发送方通过UDP头和UDP伪头生成校验和,接收方通过同样的数据生成校验和,通过比对两个校验和是否一致,可得出是否发生传输错误。
若发生传输错误,则舍弃整个报文,或者发起重启。
1.2、差错检测
UDP Header具备一个UDP校验和,通过校验和可以得知数据是否正确地传输,这就是UDP的差错检测。

NOTE:
校验和在IPV4是默认开启,但可关闭。
校验和在IPV6中是强制开启。
1.3、IP分组与重组

当报文超过数据链路层的MTU(max transfer unit)时,会将报文切分层若干IP报文发送,然后在接收端进行重组。而且只有一个IP报文会有UDP头。

重组失败的情况:
在IP层,当收到第一个UDP IP报文后,系统会启动计时器,若在计时器设定的时间内,都没有接收完完整的UDP报文,那么就会UDP重组失败。
2、TCP协议
{

TCP协议

TCP Header
TCP协议特点

差错检测
差错纠正
队列管理
重复消除
流量控制
拥塞控制

TCP生命周期器

TCP三次握手连接(三次握手)
TCP四个握手断开连接(四次分手)
TCP数据传输

}
TCP协议是面向连接、可靠的单播协议。与UDP的数据模型是数据报文不一样,TCP的数据模型是字节流。

TCP Header




TCP的标准头部长度为20字节,若有附加的可选项就另算。

端口:从有源端口和目的端口这点可以看出,TCP也是端口与端口通信的传输层协议。
序列号字段:用于表示报文的顺序,是一个32位的上升方法的无符号数,到了2的32次方后再循环回到0。
确认号字段:确认号包含的字段是该确认号的发送方期待的下一个序列号。
标志位

CWR:拥塞窗口减(发送方降低发送速率)
ECE:ECN回应(发送方接收到一个更早的拥塞通告)
URG:紧急指针有效(很少被使用)
ACK:确认(确认字段有效,连接建立后一直有效)
PSH:推送(接收方应该尽快给应用程序传送这个数据—没被可靠地实现或者用到)
RST:重置连接(取消连接,通常是因为错误)
SYN:用于初始化一个连接的同步序列号
FIN:该报文段的发送方已经结束向对方发送数据

窗口大小:16位定义窗口大小,同时允许发送多少IP报文
TCP校验和:用于差错检测
紧急指针:略

TCP协议特点:

差错检测
差错纠正
队列管理
重复消除
流量控制
拥塞控制

差错检测 & 差错纠正:

TCP同样是使用校验和与CRC来检测分组里的差错。当TCP检测到分组里又差错的时候,会使用重传的方式实现差错纠正,具体流程如下:
(1)因为TCP是一个面向连接的协议,所以每一个数据包的发送成功都会得意一个ACK响应,当某一个ACK丢失了,发送方无法根据其判断出是丢失了那个组,所以只能通过重传所有数据实现差错纠正
(2)同样的,若某一个分组被校验和检测出发生传输错误,那么接收方就不会回应ACK,让发送方超时,从而启动重传。
(3)若发生重传,那必定会有重复分组存在,所以得根据序列号进行去重操作。
队列管理 & 重复消除:

TCP能根据序列号与相应好来轻松实现IP切块与重组。
若发生重传,那必定会有重复分组存在,所以得根据序列号进行去重操作。
流量控制 & 拥塞控制:

TCP是通过变量窗口来实现流量控制和拥塞控制的。
因为TCP是面向连接的协议,能根据ACK的响应速度,改变窗口大小(令牌数量)从而改变IP数据包的发送数量,从而能在恶劣的网络环境保持通信的质量。
TCP生命周期器:

TCP三次握手连接(三次握手)
TCP四个握手断开连接(四次分手)
TCP数据传输

TCP三次握手连接(三次握手):
TCP四个握手断开连接(四次分手):
TCP数据传输:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: