计算机网络知多少-第1篇

一、 从输入URL到页面展示到底发生了什么?

1. 首先浏览器会查看电脑本地缓存,如果有直接返回,否则需要进行下一步的网络请求。

2. 在网络请求之前,需要先进行DNS解析,来找到请求域名的ip地址。如果是HTTPS请求,则还需要建立TLS连接。

DNS解析过程:假设你是一个旅行者到一个陌生城市问路,首先你会先问到随便一个路人(本地浏览器缓存),再问到一个本地居民(本地host文件),还是不知道路,此时你可能会看看路标(路由器缓存),最终你还是被自己路痴属性给震惊了,请了一个导游(DNS服务器),还是不行,最终问了导游基地的人(根DNS服务器),真好奇你去了个啥地方,最终找到了请求域名的ip地址。原来是一家有名的餐馆!】

3. 建立通道:浏览器与服务器ip地址建立TCP连接。连接建立好之后,浏览器把请求头,请求行等信息,再加上和该域名相关的cookies一起发送给服务器。(配送原材料和订单信息)

4. 服务器收到请求头信息,根据请求头生成响应数据。(根据原材料和订单信息,制作出一道美味的菜,并且用盒子打包好)

5. 浏览器解析响应头,如果响应头状态码是301,302,会重定向到新地址;如果是字节流类型,会将请求提交给下载管理器;如果是HTML类型,会进行下一步渲染(查看盒子外壳附有的信息)

6. 浏览器解析HTML文件,呈现最终渲染界面(品尝美味佳肴~)

二、三次握手

第一次握手:客户端向服务器端发送SYN报文,初始化序列号ISN(seq = x),然后客户端进入SYN_SEND状态,等待服务器确认。

第二次握手:服务器发送ACK确认客户端SYN报文(ack = x + 1),然后再发送一个SYN(seq = y),服务器端进入SYN_RECV状态。

第三次握手:客户端接收到ACK, SYN报文,ACK确认服务器端(ack = y + 1),然后客户端和服务器端都进入ESTABLISHED状态。

就像是在建立一个友谊的过程一样:

  1. 打招呼:

    想象你和一个新朋友第一次见面。你会向他们打个招呼,说:“嗨,你好!”这就像是客户端(你)向服务器(新朋友)发送了一个“嗨,你好”的消息,告诉服务器你想和它建立连接。
  2. 确认招呼:

    新朋友收到你的招呼后,会回复:“嗨,你好!”。这时,你知道对方愿意和你成为朋友。这就像是服务器回复一个“嗨,你好”的消息,并表示愿意和你建立连接。这时,双方都知道对方想要建立连接。
  3. 最后确认:

    你想确认一下朋友确实愿意和你一起玩,于是你说:“好的,我们一起玩吧!”这就像是客户端发送最后一条消息,表示确认建立连接。而服务器也确认了,于是双方都知道可以开始愉快地交流了。

解释一下SYN

SYN是TCP(传输控制协议)中的一个标志位,代表同步(Synchronize)。在TCP的三次握手过程中,SYN用于建立连接的初始阶段。

具体来说,在三次握手中的第一步,客户端发送一个带有SYN标志的TCP报文给服务器。这个报文告诉服务器客户端想要建立连接,并且包含了一些初始化的序列号。这个序列号用于标识数据流的起始点。

服务器在收到带有SYN标志的TCP报文后,会回复一个带有SYN和ACK(确认)标志的报文。这个报文表明服务器同意建立连接,并且服务器也选择了自己的初始化序列号。

SYN标志的使用是为了在建立连接时进行同步,确保客户端和服务器在传输数据之前都了解对方的状态,并且序列号的初始化是同步的。这有助于防止混淆和确保可靠的数据传输。

3. 四次挥手

  1. 告别请求:

    想象你和朋友在一起愉快玩耍,但是你觉得差不多该回家了。于是,你告诉朋友:“我要回家了,再见!”这就像是客户端发送一个FIN报文给服务器,表示希望断开连接,并且报文中有一个序列号seq=x。
  2. 确认告别:

    你的朋友接收到你的告别后,会回应:“好的,再见!”这就像是服务器回复一个ACK报文给客户端,同时把你的序列号值+1,作为ACK报文的序列号seq=x+1。这时,服务器进入CLOSE-WAIT状态,而客户端进入FIN-WAIT-2状态。
  3. 朋友也要告别:

    现在轮到你的朋友想回家了,他也告诉你:“我也要回家了,再见!”这就像是服务器发送一个FIN报文给客户端,报文中有一个序列号seq=y+1,然后服务器进入LAST-ACK状态。
  4. 最后确认告别:

    你收到朋友的告别后,回应:“好的,再见!”这就像是客户端发送一个ACK报文给服务器,同时把朋友的序列号值+1作为ACK报文的序列号seq=y+2。此时客户端进入TIME-WAIT状态,而服务器在收到你的ACK报文后进入CLOSE状态。如果客户端等待2MSL(Maximum Segment Lifetime)没有收到回复,才最终关闭连接。

为什么会有四次挥手,因为TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连续释放的通知。

4. TCP与UDP

TCP(传输控制协议 Transmission Control Protocol):面向连接,可靠,基于字节流的传输层通信协议。

UDP(用户数据报协议User Datagram Protocol):为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。

类比一下:

  1. TCP,可靠快递服务:

    • 概念: TCP就像一种可靠的快递服务,是一种有序、向连接的服务,确保数据按照顺序安全地传送。
    • 特点: 它就像你寄出的包裹,有详细记录、需要签收、传输慢但可靠,占用的资源较多。
  2. UDP,快速直达服务:

    • 概念: UDP则是一种快速直达的服务,不需事先建立连接,直接发送数据,速度快但不保证可靠性。
    • 特点: 这就像你随手扔出的明信片,速度快,但可能有些信件丢失,资源消耗较少。
  3. 区别:

    • 连接性: TCP像是有追踪号的包裹,而UDP则是不需要追踪号的明信片。
    • 可靠性: TCP提供有序、可靠的服务,就像精细的快递服务,而UDP则不做保证,数据传递不需要给出任何确认,且不保证数据不丢失以及到达顺序,就像简单的明信片。
    • 状态: TCP保留发送和接收的状态,而UDP则是无状态的,不保留记录。
    • 传输形式: TCP面向字节流的,像是整体传输的包裹,而UDP面向报文的,则是一张张独立的明信片。
    • 效率: TCP由于追踪号等机制,效率较低,而UDP由于简单,传输较快。
  4. 使用场景:

    • TCP: 适用于对数据可靠性要求高的场景,如网页浏览、文件传输、邮件传输等,就像你寄重要文件的包裹。
    • UDP: 适用于对速度要求高,能容忍少量数据丢失的场景,如视频直播、实时游戏,就像你发送一些小礼物的明信片。

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值