大家好,因为个人水平有限,肯定会有不准确的地方,希望多多指教!
第一章 了解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连接。