前言
TCP协议三次握手的过程
三次握手可以简化成两次握手吗?为什么?
TCP协议三次握手的过程
TCP协议提供的是可靠的有连接服务
三次?为什么是三次?三次分别做了什么事情?
三次是不是冗余的?两次行不行?
TCP协议与UDP协议有什么区别?
传输层介绍:传输层属于主机间不同进程的通信,传输层向上面的应用层提供通信服务,并屏蔽了下面的核心网络细节,使得面向传输层编程就像是两个主机进程之间有一条端到端的逻辑通信信道一样;当传输层采用TCP协议时,这条逻辑通信信道就是一条可靠的通信信道,而尽管下面的网络是不可靠的。
端口
网络层:提供主机之间的通信 传输层:提供主机不同进程之间的通信 应用层:提供不同应用之间的通信 实际上,应用层定义了进程交换的报文类型、报文的语法、字段的含义、进程如何发生数据、怎么样发送数据等等。
UDP协议
16位源端口号 16位目的端口号 16位UDP长度 16位UDP校验和
TCP协议
TCP协议-序号
- 4个字节[0, 4294967295]
- TCP数据是字节流————每个字节都有唯一的序号
- 起始序号在建立TCP连接的时候设置
- 序号表示本报文段数据的第一个字节的序号
TCP协议-确认号
- 和序号一致——四个字节
- 期待收到对方下一个报文的第一个数据字节序号
- 若确定号=N,则序号N-1为止的所有数据都已经正确收到
TCP协议-控制位
- 6个比特位
TCP协议-窗口
- 2字节————[0,65535]
- 窗口指明允许对方发送的数据量
- 数据缓冲空间有限,不能无限缓存数据
UDP vs TCP
- TCP提供的是可靠的有连接服务
- UDP提供的是不可靠的无连接服务
TCP连接
- 建立连接
- 通过连接进行通信
- 释放连接
- 可靠传输:无差错、不丢失、不重复
- 按序到达:数据有序
UDP连接
UDP协议只管发送,什么都不保证
- 网络层:提供主机之间的通信
- 传输层:提供主机不同进程之间的通信
1.TCP———“打电话” 2.UDP———“写信”
TCP连接过程
- 第一次:SYN=1请求同步并告诉对方自己的数据序列号
- 第二次:SYN=1、ACK=1,确认对方的数据并告诉对方自己的数据序列号
- 第三次:ACK=1,确认了对方的数据并开始传输数据
如果说第一次发送请求,主动段迟迟接受不到回应会第二次发送请求,这样最终可能造成双重连接,从资源的角度来看就是浪费了不必要的资源,从逻辑情况考虑就是异常情况,所以最后一次握手会丢弃其中一次连接,建立第三次正式连接。