1.UDP和TCP的对比
- UDP 和 TCP 是TCP/IP体系结构运输层中的两个重要协议
- 当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
- 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。
用户数据报协议UDP(User Datagram Protocol)
- UDP 支持单播、多播以及广播换句话说,UDP支持一对一,一对多,以及一对全的通信
- UDP对应用进程交下来的报文既不合并也不拆分,而是保留这些报文的边界换句话说,UDP是面向应用报文的
传输控制协议TCP(Transmission Control Protocol)
运输过程
发送方
TCP会把应用进程交付下来的数据块看作是一连串无结构的字节流,TCP并不知道这些待传送的字节流的含义
并将他们编号,并存储在自己发送缓存中
TCP会根据发送策略,提取一定量的字节构建TCP报文并发送
接收方
一方面从所接受到的TCP报文段中,取出数据载荷部分并存储在接收缓存中;一方面将接收缓存中的一些字节交付给应用进程
TCP不保证接收方应用进程所收到的数据块与发送方发送的数据块,具有对应大小的关系(例如,发送方应用进程交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块,就把收到的字节流交付给了上层的应用进程,但接收方收到的字节流必须和发送方应用进程发出的字节流完全一样)
接收方的应用进程必须有能力识别收到的字节流,把它还原成有意义的应用层数据
TCP向上层提供面向连接的可靠传输服务
2.TCP的流量控制
具体的介绍 https://www.bilibili.com/video/BV1c4411d7jb?p=60&share_source=copy_web
举例
总结
3.TCP的拥塞控制
具体的介绍https://www.bilibili.com/video/BV1c4411d7jb?p=61&share_source=copy_web
两个算法完整示意图
快重传和快恢复
快重传
快恢复
改进后的整体算法的示意图
4.TCP超时重传时间的选择
懒得听了.....
5.TCP可靠传输的实现
TCP可靠传输的实现
6.TCP的运输连接管理
概念
TCP的连接建立
- TCP 建立连接的过程叫做握手
- 握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手
- 采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误
TCP的连接建立要解决以下三个问题
- 使TCP双方能够确知对方的存在
- 使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
- 使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
TCP使用“三报文握手”建立连接
TCP 连接的建立采用客户服务器方式。
主动发起连接建立的应用进程叫做TCP客户 (client)。
被动等待连接建立的应用进程叫做TCP服务器 (server)。
“握手”需要在TCP客户端和服务器之间交换三个TCP报文段
三报文握手
为什么TCP客户进程最后还要发送一个普通的TCP确认报文段?能否使用“两报文握手”建立连接?
两报文握手
为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”,这种情况是:一端(client)A发出去的第一个连接请求报文并没有> 丢失,而是因为某些未知的原因在某个网络节点上发生滞留,导致延迟到连接释放以后的某个时间才到达另一端(server)B。本来这是一个> 早已失效的报文段,但是B收到此失效的报文之后,会误认为是A再次发出的一个新的连接请求,于是B端就向A又发出确认报文,表示同> 意建立连接。如果不采用“三次握手”,那么只要B端发出确认报文就会认为新的连接已经建立了,但是A端并没有发出建立连接的请求,因> 此不会去向B端发送数据,B端没有收到数据就会一直等待,这样B端就会白白浪费掉很多资源。undefined 所以并不多余,这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误
总结
TCP的连接释放
- TCP 连接释放过程比较复杂
- 数据传输结束后,通信的双方都可释放连接
- TCP 连接释放过程是四报文握手
TCP通过“四报文挥手”来释放连接
- TCP 连接的建立采用客户服务器方式。
- 主动发起连接建立的应用进程叫做TCP客户 (client)。
- 被动等待连接建立的应用进程叫做TCP服务器 (server)。
- 任何一方都可以在数据传送结束后发出连接释放的通知
四报文挥手
TCP客户进程在发送完最后一个确认报文后,为什么不直接进入关闭状态?而是要进入时间等待状态?
为什么不直接进入关闭状态?
因为时间等待状态以及处于该状态2MSL时长,可以确保TCP服务器进程可以收到最后一个TCP确认报文段而进入关闭状态
另外,TCP客户进程在发送完最后一个TCP确认报文段后,在经过2MSL时长,就可以使本次连接持续时间内所产生的所有报文段都从网络中消失,这样就可以使下一个新的TCP连接中,不会出现旧连接中的报文段
7.TCP报文段的首部格式
各字段的作用