计算机网络知多少-第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: 适用于对速度要求高,能容忍少量数据丢失的场景,如视频直播、实时游戏,就像你发送一些小礼物的明信片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/715786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】熟悉文件基础知识

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 文件 为了数据持久化保存,使用文件,否则数据存储在内存中,程序退出,内存回收,数据就会丢失。 程序设计中&…

微信小程序,h5端自适应登陆方式

微信小程序端只显示登陆(获取opid),h5端显示通过账户密码登陆 例如: 通过下面的变量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

Git 查看提交历史

命令说明git log查看历史提交记录git blame (file)以列表形式查看指定文件的历史修改记录 git log 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。 git log 命令用于查看 Git 仓库中…

LIN基础:从LIN Frame开始

目录: 1、LIN的网络拓扑 2、LIN Frame 1)Header 2)Response 3、LIN的通信规则 1)LIN的发送行为示例 2)LIN的接收行为示例 虽然LIN总线的通信速率不高,工程中,最高的速率也就19200bps。…

c语言extern关键字

extern 是C和C中的关键字,用于声明一个变量或函数的存在,但不进行定义。 它通常用于在一个源文件中引用另一个源文件中定义的变量或函数。 例如,extern int x; 表示 x 是一个整数变量,但它的实际定义将在其他文件中。在引用它的文…

StarRocks——Stream Load 事务接口实现原理

目录 前言 一、StarRocks 数据导入 二、StarRocks 事务写入原理 三、InLong 实时写入StarRocks原理 3.1 InLong概述 3.2 基本原理 3.3 详细流程 3.3.1 任务写入数据 3.3.2 任务保存检查点 3.3.3 任务如何确认保存点成功 3.3.4 任务如何初始化 3.4 Exactly Once 保证…

Leetcode - 周赛386

目录 一,3046. 分割数组 二,3047. 求交集区域内的最大正方形面积 三,3048. 标记所有下标的最早秒数 I 四,3049. 标记所有下标的最早秒数 II 一,3046. 分割数组 将题目给的数组nums分成两个数组,且这两个…

探索RedisJSON:将JSON数据力量带入Redis世界

探索RedisJSON:将JSON数据力量带入Redis世界 当我们谈论数据存储和查询时,Redis和JSON都是无法忽视的重要角色。Redis以其高效的键值存储、快速的读/写速度、以及丰富的数据结构赢得了开发者的喜爱。而JSON,作为一种轻量级的数据交换格式&am…

「Vue3系列」Vue3 条件语句/循环语句

文章目录 一、Vue3 条件语句1. v-if2. v-else-if 和 v-else3. v-show4. 使用计算属性进行条件渲染5. v-if与v-show比较v-ifv-show性能考虑使用场景 二、Vue3 循环语句1. 遍历数组2. 遍历对象3. 使用索引4. 注意事项 三、相关链接 一、Vue3 条件语句 在 Vue 3 中,你…

盲人出行:科技创造美好的未来

在繁忙的都市中,我每天都要面对许多挑战,盲人出行安全保障一直难以得到落实。我看不见这个世界,只能依靠触觉和听觉来感知周围的一切。然而,我从未放弃过对生活的热爱和对未来的憧憬。在一次机缘巧合下,我认识了一款名…

C3_W2_Collaborative_RecSys_Assignment_吴恩达_中英_Pytorch

Practice lab: Collaborative Filtering Recommender Systems(实践实验室:协同过滤推荐系统) In this exercise, you will implement collaborative filtering to build a recommender system for movies. 在本次实验中,你将实现协同过滤来构建一个电影推荐系统。 …

VLAN实验报告

实验要求: 实验参考图: 实验过程: r1: [r1]int g 0/0/0.1 [r1-GigabitEthernet0/0/0.1]ip address 192.168.1.1 24 [r1-GigabitEthernet0/0/0.1]dot1q termination vid 2 [r1-GigabitEthernet0/0/0.1]arp broadcast enable [r1]int g 0/0/…

Mysql学习之MVCC解决读写问题

多版本并发控制 什么是MVCC MVCC (Multiversion Concurrency Control)多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之&#xff0…

django的模板渲染中的【高级定制】:按数据下标id来提取数据

需求: 1:在一个页面中显示一张数据表的数据 2:不能使用遍历的方式 3:页面中的数据允许通过admin后台来进行修改 4:把一张数据表的某些内容渲染到[xxx.html]页面 5:如公司的新商品页面,已有固定的…

《梦幻西游》本人收集的34个单机版游戏,有详细的视频架设教程,值得收藏

梦幻西游这款游戏,很多人玩,喜欢研究的赶快下载吧。精心收集的34个版本。不容易啊。里面有详细的视频架设教程,可以外网呢。 《梦幻西游》本人收集的34个单机版游戏,有详细的视频架设教程,值得收藏 下载地址&#xff1…

FDM打印机学习

以下内容摘自网络,仅供学习讨论,侵删。 持续更新。。。 FDM打印机是通过喷头融化丝状耗材(PLA,ABS等材料),然后逐层涂在热床上,一层一层逐级抬高。 结构分类 Prusa i3型是一种龙门结构&#…

JavaWeb 下拉菜单怎么实现选择不同的颜色?

在JavaWeb中实现下拉菜单选择不同颜色的功能是一种常见的需求&#xff0c;可以通过HTML、CSS和JavaScript结合Java后端来实现。 第一步&#xff1a;编写HTML页面 首先&#xff0c;我们需要创建一个HTML页面&#xff0c;其中包含一个下拉菜单和一个用于显示颜色的区域。 <…

python 爬取文本内容并写入json文件

背景: 项目需要从html 提取说明书目录 实现: 由于html是包含所有内容,所以将其中目录部分手动重新生成一个html 文件dir26.html python import requests from bs4 import BeautifulSoup import jsonfilename "dir26.html" # 替换为实际的文件路径 with open(fil…

ES 备份索引

1、先创建索引 PUT file_info_sps_demo1 {"settings": {"index": {"number_of_shards": "1","blocks": {"read_only_allow_delete": "true"},"max_result_window": "500000",&quo…

阶跃信号与冲击信号

奇异信号&#xff1a;信号与系统分析中&#xff0c;经常遇到函数本身有不连续点&#xff08;跳变电&#xff09;或其导函数与积分有不连续点的情况&#xff0c;这类函数称为奇异函数或奇异信号&#xff0c;也称之为突变信号。以下为一些常见奇异函数。 奇异信号 单位斜变信号 …