网络编程(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分组与重组等轻量级的功能组成的。
它的传输速度十分快,但不考虑网络的状态与对其他用户网络的消极影响。但它也非常适合应用于实时要求高的场景。
它是面向无连接的、不可靠的,因为数据报文是直接发送,并且不关心是否发送成功,而接收端则关心是否能收到数据包和数据报文正确与否。
2、TCP协议
{
TCP协议
TCP Header
TCP协议特点
差错检测
差错纠正
队列管理
重复消除
流量控制
拥塞控制
TCP生命周期器
TCP三次握手连接(三次握手)
TCP四个握手断开连接(四次分手)
TCP数据传输
}
TCP协议是面向连接、可靠的单播协议。与UDP的数据模型是数据报文不一样,TCP的数据模型是字节流。
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重组失败。 |
{
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数据传输: |
相关文章推荐
- TCP、UDP协议详解
- IP.UDP.TCP这各个协议详解
- Java 网络编程(二) 两类传输协议:TCP UDP
- 网络访问的HTTP、TCP/IP、UDP协议详解
- OSI参考模型——传输层:TCP、UDP协议详解
- TCP、UDP协议详解
- (十四)Core Java 网络编程(网络模型详解,UDP聊天,TCP数据传输)-01 (110)
- TCP、UDP协议详解
- Tcp、UDP协议详解
- IP.UDP.TCP这各个协议详解
- 计算机网络——TCP与UDP协议详解
- 黑马程序员——8.网络编程(网络模型、网络地址、传输协议(UDP、TCP/IP)、客户端和服务器端、URL)
- TCP、UDP协议详解
- TCP、UDP协议详解
- TCP-IP协议详解(7) 傀儡(UDP协议)
- Java 网络编程(二) 两类传输协议:TCP UDP
- Java 网络编程(二) 两类传输协议:TCP UDP
- TCP/IP协议网络编程以及UDP和TCP之传输协议
- 详解Android 基于TCP和UDP协议的Socket通信
- 计算机网络TCP和UDP协议详解