用户访问浏览器的过程 ? TCP建立连接 3次握手4次握手

1.访问浏览器的过程

  • dns解析域名ip

    • arp获取网关地址 (地址解析协议)
    • 组织数据发送给默认网关 mac是默认网关的mac地址
    • 默认网关有转发数据的能力 把数据转发给路由器
    • 路由器根据自己的路由协议
    • 路由器根据自己的路由协议,来选择一个合适的较快的路径转发数据给目的网关
    • 目的网关(dns服务器所在的网关),把数据转发给dns服务器
    • dns服务器查询解析出baidu.com对应的ip地址,并原路返回请求这个域名的client
  • 得到baidu.com的ip之后 会发送tcp的3次握手 进行连接

    • 使用http协议发送请求数据给web服务器
    • web服务器收到数据请求之后,通过查询自己的服务器得到相应的结果,原路返回给浏览器
    • 浏览器接收到数据之后通过浏览器自己的渲染功能来显示这个网页。
    • 浏览器关闭tcp连接,即4次挥手结束,完成整个访问过程

2. 3次握手 4次挥手

在这里插入图片描述

3次握手

确定双方都准备好了 双方都会收到ACK包 确定对方都在

  1. 首先客户端向服务端发送一个带有SYN 标志,以及随机生成的序号100(0字节)的报文
  2. 服务端收到报文后返回一个报文(SYN200(0字节),ACk1001(字节+1))给客户端
  3. 客户端再次发送带有ACk标志201(字节+)序号的报文给服务端 至此三次握手过程结束,客户端开始向服务端发送数据。

4次挥手

客户端调用close() 另一端recv() 收到长度为0的请求

  1. 客户端发送带有fin标识的报文给服务端,请求通信关闭
  2. 服务端收到信息后,回复ACK答应关闭客户端通信(连接)请求
  3. 服务端发送带有fin标识的报文给客户端,也请求关闭通信
  4. 客户端回应ack给服务端,答应关闭服务端的通信(连接)请求

为什么2 3步不能合并 收到之后回应已经收到你的关闭请求 但是可能有数据还未处理完 处理完也发一个关闭请求

3.说一下什么是tcp的2MSL?

主动发送fin关闭的一方,在4次挥手最后一次要等待一段时间我们称这段时间为2MSL

TIME_WAIT状态的存在有两个理由:

  1. 让4次挥手关闭流程更加可靠
  2. 防止丢包后对后续新建的正常连接的传输造成破坏

4.为什么客户端在TIME-WAIT状态必须等待2MSL的时间?

  1. 为了保证客户端发送的最后一个ACK报文段能够达到服务器。 这个ACK报文段可能丢失,
    因而使处在LAST-ACK状态的服务器收不到确认。服务器会超时重传FIN+ACK报文段,客户端就
    能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重启计时器。
    最好,客户端和服务器都正常进入到CLOSED状态。如果客户端在TIME-WAIT状态不等待一段时间,
    而是再发送完ACK报文后立即释放连接,那么就无法收到服务器重传的FIN+ACK报文段,因而也
    不会再发送一次确认报文。这样,服务器就无法按照正常步骤进入CLOSED状态。

  2. 防止已失效的连接请求报文段出现在本连接中。客户端在发送完最后一个ACK确认报文段
    后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样
    就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

5.TCP的重发机制

没有收到应答 对方会重发

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值