搞定TCP

119 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情

前言

什么是TCP在上篇文章 ,接下来介绍什么是DNS解析,为什么进行TCP三次握手和四次挥手

什么是DNS解析

DNS解析(域名解析服务器) 将 域名 转换成 ip地址 (一个域名和ip的映射关系, 具体登记在哪里, 看我们如何申请关联的!)

假定请求的是 www.baidu.com

  1. 首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存)

  2. 如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存

  3. 如果还没有找到,那么尝试从 hosts 文件里面去找 (一个系统电脑的文件, 可以编辑, 可以存 域名 和 ip 的对应关系)

  4. 在前面三个过程都没获取到的情况下,就递归地去域名服务器去查找(就近查找)

DNS优化两个方面:DNS缓存、DNS负载均衡 (准备多台dns服务器, 进行dns解析)

什么是TCP三次握手

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

HTTP基于传输层TCP协议不用担心数据传输的各种问题(当发生错误时,可以重传)

根据这个IP,找到对应的服务器,发起TCP的三次握手

image-20201209160422978.png

为什么要3次握手

我们假定第一次发送的请求, 因为网络延迟很慢才到达服务端,

然后客户端以为这服务器居然不理睬我,然后默默的关闭的等待连接的请求,走开了(好比追女神);

但事实呢?女神(服务器)是因为各种各样的原因,很晚才看到,然后说我接受你了, 同意你的要求咱们两结婚吧!

但是,A早已经远走高飞,这个请求A完全不会收到(在第二次握手,服务端打开连接,等待客户端的响应),

那么女生呢,以为对方收到了,就会一直等待,这样B的资源就会被浪费的(创建连接的时候,空间浪费以及端口消耗);

而三次握手, 就不会发生,服务端同意连接了,但是A缺一直没有下一步的动作,导致资源浪费;

关闭TCP连接要进行四次挥手

不能直接一次性断开连接(双方知晓), 万一还有什么数据没有传完, 造成数据的丢失!

image-20201209162908979.png

这和有礼貌的好友道别一样:(a:客户端 b:服务端)1、一开始A想要回家离开,但是呢?怕B还有事情要交代,那么呢?只好先向B打招呼,我要走了,请求停止交谈(请求断开连接)

​ (此时,a到B的连接没有断开,依旧可以进行通信);2、同意A的请求,说好的,但是我这里可能还有一些话(数据)没说完。我检查看看, 你等等, 等我说完你再走。3、B确实没啥要补充的了,就告知你我可以撤了4、A说好的,知道了,88;(B得知A走开了,关闭了自己的连接 )

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