Tcp Udp总结
Tcp Udp概述
Tcp是面向连接的可靠协议 基于字节流的
Udp是面向非连接的不可靠协议 基于数据报的
Tcp不会出现无序和丢包,而Udp会出现
TCP四层模型中的传输层和网络层
TCP 四层模型:物理层 网络层 传输层 应用层
物理层ARP 网络层IP ICMP 传输层TCP UDP 应用层HTTP FTP SMTP
网络层负责在网络中进行传输,路由选择等,处理网络拓扑结构,而传输层负责端对端的连接,只关心发送端和目的端,所以传输层和网络层是不能合并的。
Tcp三次握手连接
为什么要三次握手
如果A第一次发送的连接请求报文未丢失而是发生了延时,而A发送的第二次连接请求已经建立,这时B又接收到第一次的连接请求就产生错误。
三次握手保证了双方都能接收到对方的消息,A发送连接请求,B接收到后发送SYN报文,A接收到后确定B能收到A的数据,这时A发送ACK报文,B收到后确定A能收到B的消息,连接建立。
Tcp四次挥手
Tcp为什么可靠
- tcp需要三次握手后才能发送数据,四次挥手才能断开连接
- tcp的确认号、序列号和超时重传机制保证了数据的有序和不丢包
- tcp有流量控制和拥塞控制
Tcp流量控制和拥塞控制
流量控制
流量控制使用滑动窗口 告诉发送端自己可以接收到数据数量
拥塞控制:
- 满开始:拥塞窗口的值从1开始,每次以二倍增长
- 拥塞避免:预先设有阈值,当拥塞窗口达到阈值后成线性增长
- 快速恢复:当放生丢包后,阈值设为最大拥塞窗口的1/2,拥塞窗口的值设为阈值开始线性增长。
Tcp和Udp适用情景
Udp使用情景
Udp数据结构简单
使用情景:
- 需要资源少,网络情况比较稳定
- 需要广播的数据传输
- 要求传播速率高,对丢包和无序的容忍度比较高的情况
比如即使聊天,视频聊天,直播等。
Tcp适用情景
Tcp适合对传播速率要求不高,但要求传输准确率高的情景。
比如文件传输,远程登陆等。
关于套接字编程里的listen和accept
listen的backup为监听连接的最大数,是已经三次握手成功的连接
accept接受已经建立的连接,分配文件描述符,可以进行文件传输。