再读计算机网络

1. 三次握手和四次挥手

1.1 三次握手:

客户端主动打开连接服务端,客户端发送SYN=1、seq=c 到服务端且客户端进入SYN_SEND状态,服务端发送确认SYN=1、ACK=1、ack=c+1、seq=s 且服务端进入SYN_RCVE状态,客户端再次对服务端的确认进行确认,ACK=1、ack=s+1、seq=c。自此连接建立。当第三次握手失败时服务端不重传ack报文而是发送RST(异常处理)报文进入closed状态(防止SYN洪泛攻击)。

第一阶段需要消耗一个序号,第二阶段需要消耗一个序号,第三阶段不需要消耗序号。减少SYN洪泛攻击最近使用的策略是使用Cookie推迟资源分配,等到服务器确认IP是合法的以后分配资源。

1.2 连接终止(三向握手)

 

现在大多数的实现都允许使用在连接终止时的三次握手。如上图客户端发送FIN报文,消耗一个序号(不携带其他数据消耗一个序号),服务端发送FIN+ACK报文,消耗一个序号(不携带其他数据消耗一个序号),客户端发送ACK报文(不消化序号)。

1.3 四相握手

客户端发送FIN报文并进入FIN-WAIT-1状态(如果不传输数据将消耗一个序号),客户端收到来自服务端的确认后进入FIN-WAIT-2状态,此时客户端处于半关闭状态,在客户端收到服务端的FIN报文则进入TIME-WAIT状态。

服务端收到客户端的FIN报文并发送ACK后进入CLOSE-WAIT状态,当服务端进程调用close后,服务端发送FIN报文(消耗一个序号)并进入LAST-ACK状态,服务端收到ACK后进入CLOSED状态。

1.4 半关闭状态:

在tcp中连接一方可以停止数据的发送,但仍然可以接收数据,,服务器或客户都可以发出半关闭请求。半关闭的一种情况:客户端到服务端数据发送完毕,客户端发送FIN,此连接处于半关闭状态。此时服务端发送ACK对客户端的FIN确认,此时服务端仍然能够发送数据到客户端并且能够获取客户端的确认,但是客户端不能在发送数据了。第一个ACK报文和第二个ACK报文不需要消耗序号。

客户端发送FIN报文并且收到ACK报文则进入FIN_WAIT_1状态,此时进入半关闭状态

1.5 连接复位

tcp连接可能会拒绝一个连接请求,也可能异常终止一条连接,也可能终止一条空闲连接,都是发送RST连接请求。

2. tcp转换图

2.1 连接的建立和关闭终止

2.1.1 客户端

客户端主动打开并发送SYN报文(消耗一个序号)并进入SYN-SENT状态,收到ACK报文并发送SYN+ACK报文(不消耗序号)并进入连接建立状态。客户端发送FIN报文(如果不传输其他数据则消耗一个序号)并进入FIN-WAIT状态,客户端收到ACK报文后连接处于半关闭状态并进入FIN-WAIT-2状态。客户端收到FIN报文并发出ACK报文(不消化序号)时进入TIME-WAIT状态(时间一般为2MSL),超时后进入无连接状态。

1. 如果最后一个ACK报文丢失(图一中)

因为进入TIME-WAIT时有2MSL,当最后一个ACK丢失后(在1MSL时间内),可以等到服务端重传下一个FIN报文,收到FIN报文后重新设置定时器为2MSL。1MSL为一个IP报文最大的生存周期。

2. 某个连接中的重复报文可能出现在下一个连接中。

当连接关闭后出现,建立了新的连接。但是在新的连接中收到了上次连接的报文。经过2MSL才能出现这种化身。通过序号可以直接忽略掉。

2.1.2 服务端

服务端被动打开进入LISTEN状态,收到SYN报文后发出SYN+ACK报文(消耗一个序号)并进入(SYN-RCVE)状态,收到ACK报文则进入连接建立状态。

3. 广播(ipv6不支持广播)

3.1 受限的广播

受限的广播地址是255.255.255.255。路由器受限的广播地址的数据报,这样的数据报仅出现在本地网络中。

3.2 指向网络的广播

指向网络的广播地址是主机号为全1的地址,路由器需要转发到对应的网络。

3.3 指向子网的广播

指向子网的广播地址为主机号为全1且有特定子网号的地址。同样依赖子网掩码。

3.4 指向所有子网的广播

指向所有子网的广播地址的子网号及主机号为全1,与指向子网的广播的区别在于是否划分子网。

4. IPv4的划分

4.1 分类编址

类别辨识:

网络标识和主机标识

4.2 无分类编址

首地址为地址和子网掩码与,末地址为地址和(子网掩码取反)或。

全为0的地址:

0.0.0.0/32:当主机启动时没有自己的ip地址,此时主机以0.0.0.0为源地址,以255.255.255.255为目的地址发送给dhcp服务器请求以个ip地址。

全为1的地址:

255.255.255.255/32:受限的广播地址,路由器不会转发受限的广播地址的数据报,这样的数据报仅出现在本地网络中。

本地回环地址:

127.0.0.1 /8:用来测试机器上的软件。

专用地址:

10.0.0.0 /8

172.16.0.0 /12

192.168.0.0 /16

196.254.0.0 /16

以上地址作为专用的地址,不会被全球识别。

4.3 每个地址块特殊的地址

每个地址块首地址定义(后辍全为0)为网络地址,每个地址块后辍全为1的地址称为直接广播地址(只能用作目的地址)。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值