TCP两个重要网络原理

结论:

  • ACK确认控制字段会贯穿通讯整个过程
  • TCP协议在进行通讯时候,只有处于established状态才能传输数据

    三次握手:

    序列号: 对拆分的数据包进行编号
    确认号: 有序传输数据
    发送TCP数据包,包含SYN=1控制字段,请求建立连接
    发送TCP数据包,包含ACK=1 SYN=1控制字段,确认连接建立
    发送TCP数据包,包含ACK=1控制字段,最后进行确认

    四次挥手:

    发送TCP数据包,包含FIN=1 ACK=1控制字段,请求断开连接
    发送TCP数据包,包含ACK=1控制字段,断开连接请求被确认
    发送TCP数据包,包含FIN=1 ACK=1控制字段,确认请求断开连接
    发送TCP数据包,包含ACK=1控制字段,最后进行确认

问题1:为什么是四次挥手

传输层接收到断开请求,需要向会话层进行汇报
确保数据传输完毕后,才能发出断开请求

问题2:可以不可以出现三次挥手

第二次挥手过程的ack没有发出 没有收到,直接收到了第三次挥手的信息

问题3:四次挥手时候,为什么要有time_wait

为了让通讯对端主机,可以由LAST_ACK状态接收到ACK确认信息,变为最后closed

TCP协议中的11种状态集转换

三次握手的过程中有哪些状态

第一步:服务端开启网络服务, 创建端口信息 closed — listen
第二步:客户端 发出syn请求建立连接数据包 closed —- syn_sent
一次握手
第三步:服务端 接收syn请求建立连接数据包
二次握手 发出ack syn数据包信息 listen —- syn_rcvd
第四步:客户端 接收ack syn数据包信息
三次握手 发出ack数据包信息 syn_sent —- established
第五步:服务端 接收ack数据包信息
发送真正数据信息 syn_rcvd —- established
image.png

四次挥手过程:

第一步:客户端 发出fin ack请求断开连接数据包 established —- fin_wait1
第二步:服务端 接收fin ack请求断开连接数据包
发出ack确认信息 established —- close_wait
第三步:客户端 接收到ack确认信息 fin_wait1 —- fin_wait2
第四步:服务端 发出fin ack信息 close_wait —- last_ack
第五步:客户端 接收fin ack信息
发出ack确认信息 fin_wait2 —- time_wait
第六步:服务端 接收ack确认信息 last_ack —- closed
第七步:客户端 等待了120秒(TTL 生存周期) time_wait —- closed
image.pngimage.png
左边为四次挥手右边为三次挥手

抓包软件Wireshark

DNS

域名 —-> IP 解析域名

过程

缓存 /hosts localdns服务器 根域名服务器

迭代和递归

从本地到localdns是递归
localdns到后面是迭代

如何查看对应记录

  1. dig @223.6.6.6 www.baidu.com +trace
  2. ns Lookup www.baidu.com
  3. host www.baidu.com
  4. ping www.baidu.Com

image.png

ARP

mac地址与IP地址的对应关系

构建出主机ARP表交换机也会构建mac表

目标作用:

尽可能减少局域网广播产生

ARP分为动态静态

动态:
主机经常发生变化的地方
静态:
IDC数据 中心