知识点——网络

本文详细介绍了TCP连接的建立和终止过程,包括三次握手和四次挥手的详细步骤。同时,讨论了ICMP报文在网络中的作用以及OSI七层模型的概念。还对比了交换机、路由器和集线器的区别,并解释了HTTPS与HTTP的不同以及DNS的工作原理。
摘要由CSDN通过智能技术生成

TCP连接

TCP连接是在IP网络中两个进程间(应用层协议)的双向、全双工的逻辑回路。由节点的IP地址和端口将连接双方对应起来。

TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做四次握手。

TCP连接建立

通过3个TCP段的交换来了解这些信息,就是常说的TCP 握手的3个包。一般在客户端访问TCP服务器的时候,在客户端初始化一个TCP连接,服务器端打开一个特殊端口等待传入的请求。客户端主动发起第一个 SYN置位的包开始协商TCP连接。服务器接收后向客户端回ACK,最后客户端在向服务器回复ACK后连接建立。

下面我们用TCP连接的两个对等端A和B来详细介绍握手过程,其中发起方是A。

这里写图片描述

段一:同步(SYN)段
TCP连接的发起方A向B发送第一个TCP同步段(SYN).在TCP头部的选项中会包含一些选项与对端协商。

TCP 头部包含如下字段:

*目的端口 TCP连接对端B被动打开的TCP端口数
* 源端口 TCP连接发起方A主动打开的端口,大多数是一个随机一个端口。
* 序列号 SYN的序列号ISN1可以看作是一个32位的计数器,由发起方A产生,具有一定的随机性。Windows 2003和XP根据派生启动(startup-derived)、2048位的随机密钥和一个基于RC4的随机数来计算ISN,从而减少下一TCP连接的 ISN被预测的可能性。
* 确认号 设置为SYN握手第一个包的ACK字段不重要,此时刚发起连接没有数据报需要确认。但后续的ACK是重要的。
* SYN标志 置1.
* 窗口 设置为默认值,指示本地TCP接收缓冲区大小的初始值。
* MSS TCP选项中的MSS 指示发起方A接收的最大的TCP段。
* 选择性确认(SACK) –TCP选项 如果包含这个字段,可以指示发起方A 的TCP能接收和解释此选项。
* 窗口缩放选项 如果包含,指示出发起方A的TCP能接收和支持此选项。协商好窗口因子后此连接就固定使用直到断开连接

段二:SYN-ACK段
在B收到SYN包后,B将发SYN-ACK,TCP选项仅包含发起方A发送的SYN包中的的选项。

*目的端口 设置为A的源端口
* 源端口 设置为B端口
* 序列号 B产生自己的序列号ISN2。和A发送的SYN中的ISN没有关系,仅产生的方法一样。
* 确认号 期望收到的对端的下一个字节ISN1+1.
* SYN标志 置1.
* ACK标志 置1,必须有此标志,除了SYN中置0外,SYN之后的所有报文(包括SYN-ACK和实际数据包都会带ACK的标志)。
* 窗口 设置B可以接收的最大窗口值,一般根据应用程序或者操作系统默认指定。
* MSS TCP选项 设为B能接收的最大长度的TCP段;
* SACK-许可 如果A发送的SYN包含此选项时才使用此选项,表示B的TCP能接收和解释SACK选项。
* 窗口缩放选项 如果SYN包含,此时才会包含

段3:ACK段
在TCP连接的发起方A收到SYN-ACK后,A再向B发送ACK。ACK中确认被发起方A使用的最终TCP参数,同时向B确认它该使用同样的参数。自此TCP连接建立完成。

TCP连接终止

TCP的连接终止需要4个包交换来完成。在两个逻辑管道上每个逻辑管道上发送方发送FIN置位的终止包,然后收到ACK后关闭该逻辑管道的连接。

这里写图片描述

段1:来自TCP对等端A的FIN-ACK
一个期望终止出站数据流的TCP对等端(A)发送一个不包含任何数据的TCP段,他具有如下特点:

* 序列号,和发送带数据TCP段一样设置为出站数据的当前序列号,且当前序列号是最终序列号FSN1,因为马上要关闭了。
* 确认序列号 被设为TCP对等端A期望对方发送的下一个字节。对应TCP对等端B当前序列号CSN2。
* 设置ACK标志
* 设置FIN标志,指示此逻辑管道上没有其他数据需要发送。

段2:来自TCP对等端B的ACK
与SYN类似,FIN包也会占用一个字节的序列空间,并且必须把它当作是一个字节数据来确认。所以B接收到FIN-ACK后必须发送一个ACK,具有如下特点:

* 序列号 设为出站数据的当前序列号CSN2
* 确认号字段被设为比对端A发送的最终序列号多1的值FSN1+1.
* 设置ACK标志。

一旦FIN-ACK被确认,发送初始FIN-ACK端A就不能再发送数据了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值