计算机网络

应用层三协议

Posted by Gavin on March 4, 2020

残星几点雁横塞

长笛一声人倚楼

DNS系统

DNS本质上是一个联机的分布式数据库系统,但目前大多数域名都是在本地进行解析,仅少量需要网络通信。

  • 主机向本地域名服务器查询一般是递归查询
  • 本地域名服务器向根域名服务器一般是迭代查询

    PS:DNS采用UDP报文

FTP

FTP是网络上采用的文件传送协议,提供交互式操作,允许用户指明文件类型和格式,并提供文件权限控制。基于TCP的FTP和基于UDP的TFTP的共同点在于并非直接对文件进行操作,而是现获取一个文件副本,即复制整个文件。

FTP程序有两大部分,一个主进程,多个从属进程,主进程负责打开并监听常用端口(21),使用户能够连接并发送请求,之后启动相应的从属进程来处理用户的请求(从属进程也许会按需创建一下子进程)。之后回到等待状态。

在进行文件传输时,FTP服务器和客户之间需要建立两个TCP连接,一个进行控制连接,一个进行数据连接。控制连接在整个会话期间一直保持打开,FTP客户发送的请求通过控制连接发送给服务器的控制进程,服务器端收到请求之后就会创建数据传送进程并建立数据连接,进行数据传输。

TFTP则简单的多,基于UDP,因此需要自己的检错机制。TFTP很像停止-等待协议,发送一个文件块之后,等待确认才能发送下一个文件块,规定时间内收不到就重发,发送确认的那方一段时间收不到下一个文件块,也要重发PDU(确认)。

WWW万维网

这里的重点是HTTP协议,其工作过程如下
HTTP使用TCP保证传输的可靠性,但其本身是无连接、无状态的,HTTP1.0保有以上特性,导致每次进行HTTP访问,都需要建立TCP连接,加重服务器负担。HTTP1.1解决了这个问题,其使用了持续连接,即建立连接之后,客户端和服务器可以持续利用这条连接进行后续交互,这里有两种工作方式——流水线方式非流水线方式,流水线方式可以让用户不收到上一个回应报文的情况下发送新的请求,因此请求像流水线一样,持续不断发给服务器,服务器也可以持续回复,非流水线则需要等到前一个回复才能发送新请求,因此TCP连接会有空闲,浪费了资源。

HTTP请求报文的一些方法:

由于HTTP是无状态的,因此使用Cookie来识别用户,其工作原理如下:

  • 用户浏览某网站时,该网站为用户生成一个识别码,并以此为索引在后端数据库建立记录,然后在给用户的响应报文中添加Set-Cookie的首部行
  • 用户收到响应报文后,会根据Set-Cookie的内容在其管理Cookie的文件中添加一行该服务器和该识别码的记录
  • 之后再访问该网站时,浏览器会自动在首部加上Cookie识别码