一、tcp与http

1.1 tcp/http关系

要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。

1.2 TCP/IP分层模型

  1. 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换
  2. 链路层代表驱动
  3. 网络层
    1. 使用 IP 协议,IP 协议基于 IP 转发分包数据
    2. IP 协议是个不可靠协议,不会重发
    3. IP 协议发送失败会使用ICMP 协议通知失败
    4. ARP 解析 IP 中的 MAC 地址,MAC 地址由网卡出厂提供
    5. IP 还隐含链路层的功能,不管双方底层的链路层是啥,都能通信
  4. 传输层
    1. TCP协议面向有连接,能正确处理丢包,传输顺序错乱的问题,但是为了建立与断开连接,需要至少7次的发包收包,资源浪费。
    2. UDP 面向无连接,不管对方有没有收到,如果要得到通知,需要通过应用层
  5. 会话层以上分层
    1. TCP/IP 分层中,会话层,表示层,应用层集中在一起
    2. 网络管理通过 SNMP 协议

1.3 TCP握手挥手

三次握手
  1. 客户端–发送带有SYN标志的数据包–一次握手–服务端
  2. 服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端
  3. 客户端–发送带有带有ACK标志的数据包–三次握手–服务端
四次挥手
  1. 客户端-发送一个FIN,用来关闭客户端到服务器的数据传送
  2. 服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 。和SYN一样,一个FIN将占用一个序号
  3. 服务器-关闭与客户端的连接,发送一个FIN给客户端
  4. 客户端-发回ACK报文确认,并将确认序号设置为收到序号加1

1.4 http无状态

Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。

所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。

1.5 输入url到页面加载

  1. 输入地址
  2. 浏览器查找域名的 IP 地址 这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...
  3. 浏览器向 web 服务器发送一个 HTTP 请求
  4. 服务器处理请求
  5. 服务器返回一个 HTTP 响应
  6. 浏览器显示 HTML
  7. 浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)
  8. 浏览器发送异步请求

二、OSI参考模型

image.png

ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。
image.png

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议