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

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

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

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

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

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

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

 

 

  1. 浏览器解析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:对上述层次连接的理解可能有不准确的地方)

 

 

 

 

  1. 应用层:应用层是网络服务与使用者程序间的一个接口,每次都请求都会经过客户端的应用层http协议)。

过程:确定发送数据的内容,将这些数据放到一个缓冲区,然后形成应用层的报文data。

  1. 传输层:向高层提供可靠的端到端的网络数据流服务请求从应用层到客户端的传输层(tcp或udp协议)

过程:数据是通过传输层发送,这些数据在传输层被打上包头,主要包含端口号以及tcp的各种制信息,组成了tcp的数据传送单位segment。

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

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

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

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

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

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

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值