《HTTP权威指南》读书笔记(一)

第一部分 WEB基础.png

1. 网络模型

网络模型.png

2. TCP三次握手

  • 三次握手是指TCP建立连接需要客户端和服务器一共发三个包。
  • 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换窗口大小信息。在socket编程中,客户端执行connect()时,将触发三次握手。
  • 位码即TCP标志位,有6种标示:
    SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
  1. 第一次握手(SYN=1, seq=x):
    客户端发送一个 标志位 SYN =1,随机生成seq number=123456的tcp数据包,服务器解析到SYN=1就知道客户端要求建立连接。
    发送完毕后,客户端进入 SYN_SEND 状态。
  2. 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):
    主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包。
    发送完毕后,服务器端进入 SYN_RCVD 状态。
  3. 第三次握手(ACK=1,ACKnum=y+1)
    主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
    发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手结束。


    tcp-connection-made-three-way-handshake.png

3. HTTP连接处理过程

  1. 客户端发起请求,访问url
  2. DNS解析url,转换成对应的IP地址
  3. 客户端访问到对应的IP和端口号,建立一条与服务器的TCP连接
  4. 客户端向服务器发送HTTP请求报文
  5. 服务器返回HTTP响应报文
  6. 关闭连接

4. 提高HTTP连接性能

  1. 并行连接
    通过建立多条tcp连接并发进行http请求。并行连接不一定更快。
  2. 持久连接
    HTTP/1.1(以及HTTP/1.0的各种增强版本)允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便为未来的HTTP请求重用现存的连接。
  3. 管道化连接
    在响应到达之前,可以将多条请求放入队列。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容