GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>电脑百科 > 浏览器与apache通讯中的TCP连接状态迁移

浏览器与apache通讯中的TCP连接状态迁移

来源:Ghost系统之家浏览:时间:2022-10-28 21:28:24

前言

浏览器(IE,火狐,谷歌等)和apache都是基于http协议进行通讯的。浏览器在客户端,apache在服务端。http协议是在TCP/IP模型中的应用层。TCP协议状态在TCP/IP模型中的传输层。在浏览一个网站的时候,如果关闭了浏览器,只是关闭了浏览器的进程,浏览器和apache之间的连接还没有完全断开。操作系统会在一定时间后自动断开该连接。服务端也是一样,虽然apache的进程已经关闭了,但是连接不会立刻断开,linux操作系统会在一定时间后断开该连接。

TCP/IP结构对应OSI结构

TCP/IPOSI功能TCP/IP协议族应用层应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,RIP,Telnet 表示层数据格式化,代码转换,数据加密没有协议 会话层解除或建立与别的接点的联系没有协议传输层传输层提供端对端的接口TCP,UDP网络层网络层为数据包选择路由IP,ICMP,OSPF,BGP,IGMP,ARP,RARP链路层链路层传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,MTU,ARP,RARP 物理层以二进制数据形式在物理媒体上传输数据ISO2110,IEEE802,IEEE802.2

 

那么当完成数据传输后操作系统是怎么断开该连接的?下面详细讲解这个连接和断开过程。

首先了解TCP协议的几种状态

LISTEN:侦听来自远方的TCP端口 的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接 请求的确认

ESTABLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN- WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对 连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认

TIME-WAIT:等待足够的时间以确保远程TCP接 收到连接中断请求的确认

CLOSED:没有任何连接状态

发起连接请求

apache服务器(服务端)不会主动发起连接请求的,apache服务器一直监听80端口(设定的某个端口),一旦有连接请求就会对请求作出响应。

所以每次的连接都是从浏览器(客户端)发起的。而关闭连接请求有可能是apache服务器发给浏览器,也有可能是浏览器发送给apache服务器。

浏览器发起关闭连接请求

浏览器在什么情况是会发起关闭连接请求?

1,所有的数据传输完成。

2,关闭了浏览器

3,其他

浏览器发起关闭连接请求的TCP协议状态迁移图

浏览器与apache通讯中的TCP连接状态迁移

每个步骤的说明:

1,浏览中输入网址,开始连接服务器。这时浏览器的状态是SYN_SENT,apache的状态是LISTEN。

2,apache收到连接请求,开始一些准备工作,比如为该连接开辟内存空间,建立进程,并回复浏览器确认连接。这时浏览器的状态是SYN_SENT,apache的状态是SYN_RCVD。

3,浏览收到连接确认,连接被成功建立,开始请求需要的数据。这时浏览器的状态是ESTABLISHED,apache的状态是SYN_RECVD。

4,apache收到数据请求,发送相应的数据给浏览器。这时浏览器的状态是ESTABLISHED,apache的状态也是ESTABLISHED。

5,浏览器继续请求需要的数据。这时浏览器的状态是ESTABLISHED,apache的状态也是ESTABLISHED。

6,apache收到数据请求,发送响应的数据给浏览器。这时浏览器的状态是ESTABLISHED,apache的状态也是ESTABLISHED。

。。。。。

。。。。。

重复5和6直到所有数据接收完成

7,浏览器判断所有数据接收完毕,发送关闭连接请求。这时浏览器的状态是FIN_WAIT_1,apache 的状态是ESTABLISHED。

8,apache收到关闭连接请求,开始关闭连接工作(只是开始,并不是准备工作全部完成),比如关闭内存空间,关闭进程等,并发送同意关闭连接。这时浏览器的状态是FIN_WAIT_1,apache的状态是CLOSED_WAIT。

9,浏览器收到同意关闭连接,浏览器不会再发送请求,只是等待,开始等待apache的关闭工作完成,开始等待apache完成关闭工作后的确认。这时浏览器的状态是FIN_WAIT_2,apache的状态是CLOSE_WAIT。

10,apache完成关闭工作,内存回收,关闭进程等,发送最后的关闭确认请求。这时浏览器的状态是FIN_WAIT_2,apache的状态是LAST_ACK。

11,浏览器收到最后的关闭确认,关闭连接,并发送最后的关闭连接应答。这时会有2*SML秒的缓冲时间。2*SML时间后连接正式关闭。SML时间根据操作系统不一样而不一样。centos的SML时间是30秒。这时浏览器的状态时TIME_WAIT,apache的状态是LAST_ACK。

12,apache收到最后的关闭连接应答,apache关闭连接。这时也会有2*SML秒的缓冲时间。2*SML后连接正式关闭。这时浏览器的状态是TIME_WAIT,apache的状态是TIME_WAIT。

13,2*SML秒后浏览器的状态时CLOSED,apache的状态也是CLOSED。

apache发起关闭连接请求

apache在什么情况下会发起关闭连接请求呢?

1,http.conf 里面有个参数time_out。这个值是完成上一个请求的应答之后和下一个请求到来的时间差。如果apache在完成上一个请求的应答之后等了time_out秒还没收到第二个连接,apache就会主动断开该连接。

2,apache内存耗尽,或者一些其他原因

apache发起关闭连接请求的TCP状态迁移图

浏览器与apache通讯中的TCP连接状态迁移

每个步骤的说明:

1,浏览中输入网址,开始连接服务器。这时浏览器的状态是SYN_SENT,apache的状态是LISTEN。

2,apache收到连接请求,开始一些准备工作,比如为该连接开辟内存空间,建立进程,并回复浏览器确认连接。这时浏览器的状态是SYN_SENT,apache的状态是SYN_RCVD。

3,浏览收到连接确认,连接被成功建立,开始请求需要的数据。这时浏览器的状态是ESTABLISHED,apache的状态是SYN_RECVD。

4,apache收到数据请求,发送相应的数据给浏览器。这时浏览器的状态是ESTABLISHED,apache的状态也是ESTABLISHED。

5,浏览器继续请求需要的数据。这时浏览器的状态是ESTABLISHED,apache的状态也是ESTABLISHED。

6,apache收到数据请求,发送响应的数据给浏览器。这时浏览器的状态是ESTABLISHED,apache的状态也是ESTABLISHED。

。。。。。

。。。。。

重复5和6直到所有数据接收完成

7,apache等待time_out秒后没有收到下个请求,所以主动发起关闭连接请求。这时浏览器的状态是ESTABLISHED,apache的状态是FIN_WAIT_1。

8,浏览器收到关闭连接请求,开始关闭连接工作(只是开始,并不是准备工作全部完成),比如关闭内存空间,关闭进程等,并发送同意关闭连接。这时浏览器的状态是CLOSED_WAIT,apache的状态是FIN_WAIT_1。

9,apache收到同意关闭连接,apache不会再发送请求,只是等待,开始等待浏览器的关闭工作完成,开始等待浏览器完成关闭工作后的确认。这时浏览器的状态是CLOSED_WAIT,apache的状态是FIN_WAIT_2。

10,浏览器完成关闭工作,内存回收,关闭进程等,发送最后的关闭确认请求。这时浏览器的状态是LAST_ACK,apache的状态是FIN_WAIT_2。

11,apache收到最后的关闭确认,关闭连接,并发送最后的关闭连接应答。这时会有2*SML秒的缓冲时间。2*SML时间后连接正式关闭。这时浏览器的状态时LAST_ACK,apache的状态是TIME_WAIT。

12,浏览器收到最后的关闭连接应答,浏览器关闭连接。这时也会有2*SML秒的缓冲时间。2*SML后连接正式关闭。这时浏览器的状态是TIME_WAIT,apache的状态也是TIME_WAIT。

13,2*SML秒后浏览器的状态时CLOSED,apache的状态也是CLOSED。

查看apache的连接状态

linux下查看所有连接状态的命令为:

#netstat -nat

浏览器与apache通讯中的TCP连接状态迁移

linux下查看所有TCP连接数的统计:

#netstat -nat|awk ‘{print awk $NF}’|sort|uniq -c|sort –n

浏览器与apache通讯中的TCP连接状态迁移

linux下查看80端口的连接数的统计:

#netstat -nat|grep “:80″|awk ‘{print $5}’ |awk -F: ‘{print $1}’ | sort| uniq -c|sort -n

浏览器与apache通讯中的TCP连接状态迁移

linux下查看apache的连接状态的命令为:

#netstat -nat|grep –i ’80′

浏览器与apache通讯中的TCP连接状态迁移

linux下查看apache的某个状态的命令为:

#netstat -nat|grep LISTEN

#netstat -nat|grep ESTABLISHED

#netstat -nat|grep TIME_WAIT

。。。。。。。。对应的TCP协议状态

浏览器与apache通讯中的TCP连接状态迁移

linux下查看apache的所有相关连接状态的命令为:

#netstat -n |awk ‘/^tcp/ {++S[$NF]} END {for(a in S)print a,S[a]}’

该命令非常实用,会列出apache的所有连接状态信息的统计。如果某个状态没有连接则不显示。

浏览器与apache通讯中的TCP连接状态迁移

补充:

本篇文章是为以后编写关于apache,mysql并发优化的辅助文章,是最基础的知识。是本人对浏览器与apache的TCP连接状态的一些理解,难免会有一些错误。但是作为一个程序员如果理解上面这些内容足以。更多的细节内容应该是架构师的事情了。

本文地址:

标签:

推荐系统

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户

  • 番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    语言:中文版系统大小:3.91GB系统类型:Win7

    欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统

  • 番茄花园 Windows 10 极速企业版 版本1903 2022年7月(32位) ISO镜像快速下载

    番茄花园 Windows 10 极速企业版 版本1903 2022年7月(32位) ISO镜像快速下载

    语言:中文版系统大小:3.98GB系统类型:Win10

    番茄花园 Windows 10 32位极速企业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动激活

  • 新萝卜家园电脑城专用系统 Windows10 x86 企业版 版本1507 2022年7月(32位) ISO镜像高速下载

    新萝卜家园电脑城专用系统 Windows10 x86 企业版 版本1507 2022年7月(32位) ISO镜像高速下载

    语言:中文版系统大小:3.98GB系统类型:Win10

    新萝卜家园电脑城专用系统 Windows10 x86企业版 2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程