1.传输层
2.三次握手
3.四次握手
1.1传输层中传输的是数据段
1.2.1.源主机和目标主机之间,提供可靠的数据传输和通信服务。
1.2.2.数据分段和重组。 发送方:上层应用程序传输的数据吧会被进行分段,每个数据段都有一个 序列号。添加一定的控制信息。
接收方:在传输层把分段 的重组,形成完整的数据。
1.2.3.连接管理:可以建立,维护以及终止源主机和目的主机之间的连接。tcp udp,主流都是tcp.
1.2.4.可靠性保证::tcp,数据分段后的有序传递,数据丢失后检测以及重传。数据的检测和纠错机制。确保传输过程中的数据完整性和可靠性。
(tcp中包含源端口和目的端口)
协议:数据通信过程的规则和约定,以及交互方式
TCP协议:传输控制协议
UDP协议:用户数据报协议
1.面对连接,端口到端口,建立通信。
补充(程序:开发写好的代码,未运行,就是程序
进程:执行中的代码)。
2.进程到进程:两个执行起来的程序进行端口通信。
tcp 全双工服务。数据可以在同一时间内双向传输。
tcp发送缓存和接受缓存,用来临时存储数据。
缓存:临时数据。
tcp:通信双方建立通信之前,必须要先建立连接。
1.无连接,不保证传输可靠性。发送端不关心发送的数据能否够到达目标主机,数据是否出错也不在考虑范围之内。收到数据的主机,也就是接收方,他也不会告诉发送方我是否收到了数据。
2.可靠性由上层协议进行保护,用户自定义。
总结:主流还是tcp;安全,速度相对慢
udp:效率高,速度快,不安全。
源端口:发送放的端口号
目的端口: 接收方的端口号
stream index:1 序列号,索引号。
flag:标志位。tcp协议用来控制连接的标识符。
URG:紧急位,优先级较高的数据需要立刻通过的时候,才会有紧急位,URG=1.
ACK: 确认位 只有ACK=1时,确认序列号的字段猜有效,ACK=0 无效
Ack:接收方期望收到发送大下一个报文端的第一个字节数据的编号。
接收放希望你发送方下一次发的数据的第一个字节的编号为确认号,确认传输是否正常。
PSH:急迫位,立刻送达应用层 PSH=1。
RST: 重置位,RST=1,通知重新建立tcp连接。
SYN: 同步/连接 位。需要建立的第一步,SYN=1。
FIN:断开位,FIN=1,表示要断开连接。
SEQ: 报文序号。
WIN:接收缓冲区的空闲空间。
所有基于TCP协议的通信,第一步都是建立连接,建立连接一定是三次握手。
PC1 PC2
第一步:pc1发送建立连接的请求
SYN=1 表示我希望和PC2建立。seq=1
pc2
SYN=1,ACK=1 确认同意建立连接 (Ack=1+1 确认身份,确认你是pc1) seq=2
pc1
ACK=1(seq=2(告诉pc2我是pc1,身份确认),Ack=2+1(确认双方的数据传输。))
客户端到服务端
第一步:客户端发送到服务器,建立连接的请求
客户端 :SYN=1
服务端:SYN=1 ACK=1
客户端:ACK=1
为什么不需要第四次确认。两次确认已经分别确定了双方的序列号。已经知道双方是谁,不需要再进行第四次确认了。
3.TCP四次握手
tcp四次挥手:
pc1 和 pc2
pc1断开连接:
第一步:
FIN=1 ACK=1 断开,确认。
第二步:
pc2: ACK=1。确认是CP1
第三步
pc2:FIN=1 ACK=1,我要和pc1断开,而且确认
第四部:
pc1 ACK=1,确认,断开。
四次挥手:pc1发送断开连接之后,pc2回复ack确认,这个时候PC1将不再向pc2发送数据。pc2还要接收pc1没有处理完的数据。
全部收到,处理完毕之后,pc2才会向pc1发送确认断开。pc1发送ACK,确认断开。
为什么是四次挥手不是三次挥手:防止另一端发送的数据,接收放还没有接收完毕,直接关闭,会导致数据丢失。所有要有
等待数据全部接受完毕的过程。然后才能断开连接。以保证数据的完整。
TIME WAIT(连接保持)
1.确保网络中所有的分段已经全部传输完毕,避免影响后续链接。
2.如果重新建立连接,就不需要再一次打开新的进程,直接使用之间的连接进程。
TIME WAIT目的:
1.避免资源浪费
2.保证数据收发完毕
MSL(Maximum Segment Lifetime):tcp连接进程可以在网络中存活的最长时间。超过这个时间,TCP进程将会直接丢弃。
MSL的TTL(生命周期)一般为TIME WAIT 的两倍。目的是为了让数据完整的收发完毕。