传输层协议

目录

1.传输层

2.三次握手

3.四次握手


1.传输层

1.1传输层中传输的是数据段

1.2传输层的作用

1.2.1.源主机和目标主机之间,提供可靠的数据传输和通信服务。

1.2.2.数据分段和重组。 发送方:上层应用程序传输的数据吧会被进行分段,每个数据段都有一个                                                       序列号。添加一定的控制信息。

​                                       接收方:在传输层把分段 的重组,形成完整的数据。
1.2.3.连接管理:可以建立,维护以及终止源主机和目的主机之间的连接。tcp udp,主流都是tcp.

1.2.4.可靠性保证::tcp,数据分段后的有序传递,数据丢失后检测以及重传。数据的检测和纠错机制。确保传输过程中的数据完整性和可靠性。

(tcp中包含源端口和目的端口)

1.3传输层协议

协议:数据通信过程的规则和约定,以及交互方式

TCP协议:传输控制协议

UDP协议:用户数据报协议

1.3.1tcp协议:(传输控制协议)

                      1.面对连接,端口到端口,建立通信。

补充(程序:开发写好的代码,未运行,就是程序

           进程:执行中的代码)。

                       2.进程到进程:两个执行起来的程序进行端口通信。

    tcp 全双工服务。数据可以在同一时间内双向传输。

​    tcp发送缓存和接受缓存,用来临时存储数据。

    缓存:临时数据。

​     tcp:通信双方建立通信之前,必须要先建立连接。

1.3.2udp协议:(用户数据包协议)

                          1.无连接,不保证传输可靠性。发送端不关心发送的数据能否够到达目标主机,数据是否出错也不在考虑范围之内。收到数据的主机,也就是接收方,他也不会告诉发送方我是否收到了数据。

                           2.可靠性由上层协议进行保护,用户自定义。

总结:主流还是tcp;安全,速度相对慢

           udp:效率高,速度快,不安全。

1.4tcp报文的字段:

源端口:发送放的端口号

目的端口: 接收方的端口号

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:接收缓冲区的空闲空间。

2.三次握手

所有基于TCP协议的通信,第一步都是建立连接,建立连接一定是三次握手。

传输层协议_第1张图片

 

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四次握手

传输层协议_第2张图片

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 的两倍。目的是为了让数据完整的收发完毕。

       

 

你可能感兴趣的:(服务器,网络,运维)