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

本文深入解析了TCP/IP协议的工作原理,包括DNS解析、ARP协议、3次握手与4次挥手过程,以及TCP的重发机制。详细阐述了客户端与服务器如何建立和关闭连接,为何需要等待2MSL时间,确保网络通信的可靠性。

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的重发机制

没有收到应答 对方会重发

### 常见使用TCP握手建立连接和四挥手释放连接的应用程序 许多常见的互联网应用程序依赖于传输控制协议(TCP)来确保可靠的数据传输。这些应用程序通常需要通过TCP的三握手过程建立连接,并在通信结束后通过四挥手的过程释放连接。 #### 1. **Web浏览器HTTP/HTTPS** Web浏览是最典型的基于TCP的应用场景之一。当用户访问网站时,浏览器作为客户端会向目标服务器发起TCP连接请求。这一过程中涉及标准的三握手机制以建立可靠的连接[^3]。一旦数据交换完成,双方则遵循四挥手流程断开连接[^4]。 #### 2. **电子邮件服务 (SMTP, IMAP, POP3)** 邮件系统的多个组件均运行在TCP之上: - SMTP用于邮件发送; - IMAP和POP3负责邮件接收。 这些协议都需要先执行TCP的三握手才能开始实际的消息传递操作[^1]。同样地,在结束会话之前也会经历完整的四挥手阶段以便安全退出。 #### 3. **文件传输协议 (FTP)** FTP是一种广泛使用的文件上传下载工具,其工作原理也是构建在一个持久性的TCP通道上的。无论是命令模式还是数据模式下的交互都需事先完成三步验证式的初始链接创建动作[^2]。随后,在任务完成后按照既定规则解除关联关系——即所谓的“四挥别”。 #### 4. **远程登录服务 (SSH)** 安全Shell(SSH)提供了加密保护下的终端仿真功能以及其他网络服务的安全转发选项。为了保障整个通讯链路的质量与安全性,SSH同样采用了基础层面的TCP握手机制来进行初步认证及参数协商等工作项处理前的基础准备活动[^1]。最终,在正常关闭期间,则依照常规做法实施相应的拆线步骤—也就是我们所说的四个回合的通知序列。 ```python import socket def establish_tcp_connection(host, port): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, port)) # This triggers the three-way handshake implicitly. print(f"Connection established with {host}:{port}") return sock except Exception as e: print(e) def close_tcp_connection(sock): try: sock.shutdown(socket.SHUT_RDWR) # Initiates the four-way teardown process. sock.close() print("Connection closed.") except Exception as e: print(e) ``` 以上代码片段展示了如何利用Python的标准库`socket`模块手动管理TCP连接的生命周期,包括隐含调用的三握手和显式触发的四挥手逻辑。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值