[读书笔记]当你打开网页的时候,世界都发生了什么

news/2024/7/2 23:42:38

原文地址:https://github.com/aisuhua/we...

  • 当你打开网页的时候,世界都发生了什么(1)

  • What happens when you type a URL in browser

  • What really happens when you navigate to a URL

  • what happens when you type in a URL in browser

  • TCP协议中的三次握手和四次挥手(图解)

  • 《图解HTTP》

  • Domain Name System

  • Hypertext Transfer Protocol -- HTTP/1.1

《图解HTTP》(节选)

1.3.3 TCP/IP通信传输流

图片描述

利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。

我们用HTTP举例来说明,首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。
接着,为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。

接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

图片描述

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。

这种把数据信息包装起来的做法称为封装(encapsulate)。

1.4.2 确保可靠性的TCP协议

按层次分,TCP位于传输层,提供可靠的字节流服务。

所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

确保数据能到达目标

为了准确无误地将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)策略。

用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)——SYN(synchronize)和ACK(acknowledgement)。

发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。

若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

图片描述

除了上述三次握手,TCP协议还有其他各种手段来保证通信的可靠性。

1.6 各种协议与HTTP协议的关系

学习了和HTTP协议密不可分的TCP/IP协议族中的各种协议后,我们再通过这张图来了解下IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥了哪些作用。

图片描述


http://www.niftyadmin.cn/n/4074643.html

相关文章

Python基础 | pandas.dataframe 专题使用指南

1.选取行名、列名、值 2.以标签(行、列的名字)为索引选择数据—— x.loc[行标签,列标签] 3.以位置(第几行、第几列)为索引选择数据—— x.iloc[行位置,列位置] 4.同时根据标签和位置选择数据——x.ix[行,列] 5.选择连续的多行多列…

组件中传值(复杂情况下)

全局定义方法: putExtra: function(obj){return encodeURIComponent(JSON.stringify(obj));},getExtra: function(obj){return JSON.parse(decodeURIComponent(obj));} 使用方法: url: /pages/product/detail?goods${this.$utils.putExtra(item)}//数…

mongodb 开启认证方式

一、单实例情况 1.启动服务(不启用--auth参数) 2.创建超级管理员账户 use admindb.addUser( { user: "admin", pwd: "admin", roles: [ "userAdminAnyDatabase" ] } )或db.addUser( { user: "root", pwd: "…

ClientDataSet的查找和过滤功能

ClientDataSet在可以使用Locate,Lookup和SetRange方法在本地(如果本地数据只是一张表的一部分数据会从服务器下载整张表)数据集中快速找到想要的数据,而不必用SQL访问数据库,这样不仅减少了查询时间,也减轻了服务器的负担&#xf…

uni-app打包微信小程序打开doc等文档文件的方法

//resume是一个json&#xff0c;suffix是后缀名&#xff0c;src是文件服务器地址 <image v-if"resume.suffix pdf" mode"aspectFill" class"uni-uploader__img" src"/static/img/approval/pdf.png" :data-src"resume.url&quo…

面试需要掌握的技能

数据结构&#xff1a;链表、栈、队列&#xff1a;链表插入元素。Huffman树&#xff1a;树的构建。二叉树、平衡二叉树&#xff1a;树的遍历&#xff08;前序中序后序&#xff09;&#xff0c;查找树中两个元素和为某个值的叶子节点。堆&#xff1a;大&#xff08;小&#xff09…

vue返回上一页并传值回上一个页面(uni版本)

1.返回上一页点击按钮及配置参数 backNav() {uni.$emit("planAdd",{tabIndex: 2});uni.navigateBack(); //此地方用的是uni的返回上一页方法&#xff0c;如需其他的返回方法请进行相对应替换 }, 2.页面接收参数(在onShow里) onShow(){let that this;uni.$on(&…

Java课课堂笔记3.10

转载于:https://www.cnblogs.com/lizi-shaoxiaoye/p/6531526.html