关于那些你不知道的TCP/IP协议

253 阅读3分钟

前言:写这篇播客的目的,是因为自己最近在补习http请求和tcp协议的相关知识.虽然这些知识,在平常的日常开发中,并不能帮助你敲更好的代码.但是在某些特定情境中,可以让你更好的理解,为什么要这样做.这样做有什么好处.所以写这篇播客,来记录一下,我学习的路程.

我叫佑子,一名无名的前端copy机.下面正文开始

QQ图片20211109090631.jpg

TCP协议

1.TCP协议是什么?

TCP(Transmission Control Protocol 传输控制协议) 是一种面向连接(连接导向)的,可靠的,基于IP的传输层协议

TCP使用校验,确认和重传机制来保证可靠传输

而HTTP协议 就是建立在TCP/IP协议之上的一种应用

2.一次完整的HTTP服务过程是什么

当我们在web游览器的地址栏中输入:www.baidu.com,具体发生了什么?

  1. www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
  2. 根据这个IP,找到对应的服务器,发起TCP的三次握手
  3. 建立TCP连接后,发起HTTP请求
  4. 服务器响应HTTP请求,游览器得到html代码
  5. 游览器解析html代码,并请求html代码中的资源(如js,css,图片等) (先得到html代码,才能去找这些资源)
  6. 游览器对页面进行渲染呈现给用户
  7. 服务过程完毕,关闭TCP连接,四次挥手 注: 1.DNS怎么找到域名的?

DNS域名解析采用的是递归查询的方式,过程是,先去DNS缓存 -> 缓存找不到就去根域名服务器 -> 根域名又会去找下一级,这样递归查找之后,找到了,给我们的web服务器

3.TCP三次握手理解(双方确认)

TCP是一个端到端的可靠面相连接的协议

HTTP基于传输层TCP协议不用担心数据传输的各种问题(当发生错误时,可以重传)|根据这个IP,找到对应的服务器,发起TCP的三次握手(tcp三次握手四次挥手)

image.png

首先

  1. 游览器向服务器发起请求,说要建立链接
  2. 服务器说;我同意了,你确定要建立链接吗
  3. 游览器说:确定 到此,TCP连接已经建立

可能到这里,有些小伙伴不理解,问什么还需要游览器发送一次确定,才可以建立连接.

如果没有第三次握手,假设游览器再第二次握手的时候,已经发起建立连接,而游览器在这时候,不需要建立连接了,关闭了.然而服务器不知道这回事,一直在这里占用TCP连接,对客户端是没有什么影响,但是特别占用服务器的性能.所以需要第三次握手来确定一下

4.关闭TCP连接四次挥手的理解(客气挽留)

关闭连接(四次挥手)

image.png

这和有礼貌的好友道别一样:(a:客户端b:服务端)

  1. 一开始A想要回家离开,但是呢?怕B还有事情要交代,那么呢?只好先向B打招呼,我要走了,请求停止交谈(此时,a到B的连接没有断开,依旧可以进行通信);
  2. 同意A的请求,说好的,但是我这里可能还有一些话(数据)没说完。我检查看看,你等等,等我说完你再走。
  3. B确实没啥要补充的了,就告知你我可以散伙了
  4. A说好的,知道了,88;(B得知A走开了,关闭了自己的连接)

完整的一次http请求流程才算结束