《图解http》学习总结 第一章(2020.11.21)

293 阅读3分钟

大家好,因为个人水平有限,肯定会有不准确的地方,希望多多指教!

第一章 了解Web及网络基础

q1:tcp/ip协议族是啥?有啥用?包括那些协议?

它是互联网相关的各类协议族的统称,保证了计算机通信在同一个规则下通信。

大致的内容如图:

q2:怎么分层的?各层大致的作用?

应用层: 决定了想用户提供应用服务时通信的活动。

传输层: 对上层应用层提供了网络连接中的两台计算机中的数据传输。

网络层:用来处理在网络上流动的数据包。

链路层: 用来处理连接网络中的硬件部分。

q3:http,dns,tcp,ip协议各自所在层?各自的内容大致有啥?

http协议: 应用层 ,负责生成对应目标web服务器的http请求报文以及对对应请求内容的处理。

dns协议:应用层,提供域名到ip地址之间的解析服务。

tcp协议:传输层,提供可靠的字节流服务,包括切割数据和三次握手等。

ip协议:网络层,将各种数据包分配到指定的地址。

q4:URI和URL分别是啥?有啥关系?URI的格式内容?

URI:由某个协议方案表示的资源的定位标识符。

URL:资源在互联网上的地址。

URL是http协议下的URI,是URI的子集。

格式如图

延伸: tcp/ip建立连接时的三次握手,释放连接时的四次挥手的理解? 为啥建立连接时要三次握手?

三次握手:

四次挥手:

通俗的理解就是:

三次握手的过程:

client:我这边没问题,请求建立tcp/ip连接!

server:收到,我这边也没啥问题。

client:收到,建立tcp/ip连接。

为啥建立连接时要三次握手?而不是直接两次或四次?

不是四次,是为了避免浪费。

不是两次,是为了避免超时重连等情况。

谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”

四次挥手的过程:

client:我这边没问题,请求断开tcp/ip连接!

server:收到,我这边也没啥问题,但得等数据传完。

server:过了一会数据传完了,现在可以释放tcp/ip连接了。

client:收到,释放tcp/ip连接。