【http协议】访问一个完整http请求会经历哪些问题

一个完整的http请求主要有六个步骤:
  1. 域名解析
  2. 发起TCP的3次握手
  3. 建立TCP连接后发起http请求
  4. 服务器端响应http请求,浏览器得到html代码
  5. 浏览器解析html代码,并请求html代码中的资源
  6. 浏览器对页面进行渲染呈现给用户。

二.http与https的区别:

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

  HTTPS和HTTP的区别主要如下:

  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。


三.网络传输协议:

----计算机通信的共同语言
应用层:http协议--对tcp 的又一层封装
传输层:tcp udp------socket编程就是在传输层,之后会分享socket编程~
网络层:ip
数据链路层:
物理层:

四.tcp/ip 的三次握手

(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
  (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
  (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
  (A)URG:紧急指针(urgent pointer)有效。
  (B) ACK:确认序号有效。
  (C)PSH:接收方应该尽快将这个报文交给应用层。
  (D)RST:重置连接。
  (E) SYN:发起一个新连接。
  (F) FIN:释放一个连接。
tcp/ip 三次握手:
前提:服务端是监听状态
1.客户端发送请求连接消息到服务端SYN
2.服务器端给客户端发送AYN ACK可以进行连接(确认)
3.客户端再向服务端发消息ACK(准备开始传输数据)

通俗的讲:
三次握手流程
1.客户端发个请求“开门呐,我要进来”给服务器
2.服务器发个“进来吧,我去给你开门”给客户端
3.客户端有很客气的发个“谢谢,我要进来了”给服务器

四.TCP四次挥手
一般由客户端主动断开连接,服务端只做被动连接。但是如果有必要,服务端也可主动断开连接。
FIN_WAIT_1: 在ESTABLISHED(连接)状态下,主动断开连接会向对端发送FIN,然后进入FIN_WAIT_1状态。
CLOSED_WAIT: 被动断开连接的一端收到FIN之后,会回应ACK,然后进入CLOSED_WAIT状态,在CLOSED_WAIT状态下,连接只能发送数据不能接收数据。
FIN_WAIT_2: 主动断开连接的一端收到FIN的ACK回应后会进入FIN_WAIT_2状态。此时无法再发送数据但是可以接受数据。
LAST_ACK: 被动断开连接的一端在缓冲区数据发送完成后会发送FIN然后进入LAST_ACK状态。如果程序健壮性较差,在socket收到文件结束符之后没有关闭socket,此处不会发出FIN,导致连接停留在CLOSED_WAIT&FIN_WAIT_2状态。
TIME_WAIT: 主动断开连接的一端在收到对端的FIN后回应ACK然后进入TIME_WAIT。此状态下连接已断开,但为了避免最后一个ACK在网络中迷路,而导致的状态紊乱,端口会被保留2*MSL的时长。
MSL:报文最大生存时间
CLOSED: 在TIME_WAIT状态停留时间达到2*MSL之后进入CLOSED状态,表示无任何连接。

四.tcp/ip四次挥手
客户端给服务端发送消息数据传输完了
服务端给客户端发送消息我接收到你传输完信息了
服务端开始关闭关闭完完之后再给客户端发送消息我已经关闭了
客户端端说我接收到你得关闭确认了(time_wait)
timewait(最大连接生存时间得两倍)

通俗的讲:
四次挥手流程
1.客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他
2.服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走
3.服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊)
4.客户端发个“我知道了,我走了”,之后自己就走了


猜你喜欢

转载自blog.csdn.net/qq_30758629/article/details/80855495