从发出http请求到服务器应答的主要过程

可爱的小添添 2018-10-06 23:39:53  5019  收藏 10
版权
一、从发出http请求到服务器应答的主要过程

1.连接:向服务器发送请求之前需要建立连接,通过DNS服务器创建套接字、建立连接、收发数据等操作查询ip地址,再建立socket连接。

2.请求:连接成功后,向Web服务器发送http消息格式的请求,包括get、post等命令。

3.应答:web服务器收到请求后,从它的文档空间中搜索子目录index的文件index.html,并把其传送给web服务器,再将具体信息传递回浏览器。

4.关闭连接:Web浏览器与Web服务器断开,以保证其他Web浏览器能与Web服务器建立连接。

二、客户端发出请求到服务器做出相应经历的步骤

浏览器解析URL
将输入的网址进行解析,拆分出服务器的名字以及路径名。

(2)通过DNS查询IP地址

Socket 库提供查询 IP 地址的功能,用于调用网络功能的程序组件集合,通过socket、协议栈、网卡和DNS服务器查询IP地址,委托协议栈发送消息时通过①创建套接字②将管道连接到服务器端的套接字上③收发数据④断开管道并删除套接字。

(3)向服务器发送请求

浏览器确定了 Web 服务器和文件名,再根据这些信息来生成 HTTP 请求消息,使用get或post方法等发送请求。

(4)服务器接收操作

①网卡将接收到的信号转换成数字信息, MAC 模块将网络包从信号还原为数字信息,校验 FCS,并存入缓冲区,网卡驱动会根据 MAC 头部判断协议类型,并将包交给相应的协议栈。

②IP模块会进行接收操作,协议栈的IP模块会检查 IP 头部,判断是不是发给自己的并且判断网络包是否经过分片,再将包转交给 TCP 模块或 UDP

模块。

③TCP模块处理连接包和数据包,收到的是发起连接的包时,则TCP模块会确认TCP头部的控制位SYN,检查接收方端口号,为相应的等待连接套接字复制一个新的副本,记录发送方 IP 地址和端口号等信息。

收到数据包时TCP模块会根据收到的包的发送方IP地址、发送方端口号、接收方 IP 地址、接收方端口号找到相对应的套接字,将数据块拼合起来并保存在接收缓冲区中,向客户端返回ACK。

④当数据收发完成后,便开始执行TCP模块便开始执行断开操作。

(5)服务器解释请求并作出响应

将请求的 URI 转换为实际的文件名,再运行 CGI 程序最终返回响应消息。

(6)浏览器接受相应并显示内容

Web服务器调用Socket库的write,将响应消息交给协议栈,协议栈会将数据拆分成多个网络包最终到达客户端,判断响应消息中的数据属于哪种类型,最终根据数据类型调用用于显示内容的程序。

三、数据的http请求过程所经历的层次

客户端的应用层——客户端的传输层——客户端的网络层——客户端的链路层——物理——服务器的链路层——服务器的网络层——服务器的传输层——服务器的应用层

(Ps:对上述层次连接的理解可能有不准确的地方)

应用层:应用层是网络服务与使用者程序间的一个接口,每次都请求都会经过客户端的应用层(http协议)。
过程:确定发送数据的内容,将这些数据放到一个缓冲区,然后形成应用层的报文data。

传输层:向高层提供可靠的端到端的网络数据流服务,请求从应用层到客户端的传输层(tcp或udp协议)。
过程:数据是通过传输层发送,这些数据在传输层被打上包头,主要包含端口号以及tcp的各种制信息,组成了tcp的数据传送单位segment。

3.网络层:网络层负责在源和终点之间建立连接。

过程:将数据打包,包头内含有源及目的地的ip地址。

4.链路层:数据链路层通过物理网络链路提供数据传输。

过程:将MAC地址及链路控制信息加到数据包里形成Frame。Frame在链路层协议下,完成了相邻节点间的数据传输,完成连接建立。

5.物理层:负责最后将信息编码成电流脉冲或其它信号用于网上传输。

过程:负责该数据以bit为单位从主机传输到下一目的地。

 
————————————————
版权声明:本文为CSDN博主「可爱的小添添」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41974256/article/details/82955108

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值