linux-网络协议和管理

本文详细介绍了TCP连接的三次握手与四次挥手过程,以及Linux中的网络协议概念,包括IP地址、私有IP地址的分类。同时,讨论了网络配置中的ss和ip命令的使用,以及CentOS6到8的网络配置方法。
摘要由CSDN通过智能技术生成

一、OSI七层模型

 

 二、建立TCP连接:三次握手、断开TCP连接:四次挥手

 

 ●序号(seq):占用4个字节,表示本报文段所发送数据的第一个字节的编号,他的编号范围是0-2^32-1,即4294967296,当序号增加到2^32-1之后,下一个序号将又重新绕回到0开始编号。编号的方式是每个分包的起始字节号,例如第一次要发送的数据分包编号为seq=1,如果这次发送的数据长度是len=10字节,则下个分包的编号是seq=11,依次类推。

●确认号(ack):占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。

●ACK位:占用1个比特位,其值为0或1,ACK=1时才表明前面的ack确认号字段是有效的,当ACK=0时,确认号字段无效。TCP要求,连接建立完成之后,ACK字段总是设置为1.

●SYN位:占用1个比特位,其值为0或1,用于同步编号。当SYN=1而ACK=0时,说明连接尚未建立,所以这是一个TCP的连接请求,如果对方接受连接请求,则回复时将设置SYN=1且ACK=1。SYN会在连接建立后设置为0,所以SYN=1表示这是TCP连接建立前的请求或响应包,此时结合ACK即可判断是请求还是响应。

●FIN位:占用1个比特位,其值为0或1,当FIN=1时,表明请求释放TCP连接。

 

三次握手

TCP在传输数据之前,首先需要建立好TCP连接,后续所有数据都基于这个已建立的连接来传输。

 

 

 首先服务端B的服务进程已经监听在某个端口上,监听之后就可以一直等待客户端请求建立TCP连接

1、当客户端A想要和B建立TCP连接时,首先会发送一个连接请求报文给服务端B。在这个请求报文中,TCP首部中的SYN为设置为1,ACK位设置为0,假设此时的序号是x,即SYN=1、ACK=0、seq=x。这个包也称为SYN包,当客户端发送完SYN包后,它将进入SYN_SENT状态。

2、当B收到该报文后,发现其中的SYN=1、ACK=0,便知道这是一个TCP连接的请求包。如果B确认与A建立TCP连接,那么B需要回复A。回复时,SYN=1、ACK=1、ack=x+1、seq=y。注意区分这里的ACK和ack,ACK表示的是占用一个比特位的ACK位置位,ack是确认号。这个包通常被称为ACK包,当服务端发送完ACK包之后,它将进入SYN_RECV状态。

3、当A收到B的回复报文后,发现里面的SYN=1、ACK=1,于是也会向B回复一个ACK包,回复时,SYN=0、ACK=1、seq=x+1、ack=y+1。这里的SYN=0、ACK=1表示这不是建立连接的请求包,而是回复包。A发送完之后,就进入ESTABLISHED状态,表示连接在A这端已经建立完成。

4、B最终收到A的ACK包之后,也将进入ESTABLISHED状态,到此,TCP连接就建立完成。

B回复A时,也发送了一个SYN=1的包,相当于也是在请求A去建立TCP连接,所以A最后回复了一个ACK包。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值