计算机网络笔记整理

应用层

应用层协议定义了在不同端系统的应用程序进程如何进行通信,即相互传递报文:

  • 交换的报文类型:如请求报文和响应报文;
  • 各种报文类型的语法:如报文中各个关键字段及其详细描述;
  • 报文的语义:即包含在字段中的信息的含义;
  • 进程何时、如何发送报文及对报文进行响应的规则。

HTTP(Hypertext Transfer Protocol)

  • 使用TCP做为传输层协议;
  • 不保存客户机的任何状态信息,是一个无状态协议;
  • 端口号默认为80;
  • 非持久连接:每一个请求/响应对是经一个单独的TCP连接发送,即每次响应完毕后就会关闭TCP连接;
  • 持久连接:同一个客户机的所有的请求/响应对经同一个TCP连接发送,一般会设置一个超时间隔;
  • 404:Not Found,请求文档不在服务器上;400:Bad Request,该请求不能被服务器理解;
cookie:用户与服务器的交互,允许站点跟踪用户
cookie的4个组成部分:
  1. 在HTTP响应报文中有个cookie首部行:set-cookie:cookie-id,cookie-id是服务器为当前用户生成的唯一标识;
  2. 在HTTP请求报文中有个cookie首部行,方便服务器跟踪用户;
  3. 在客户端系统中保存一个cookie文件,由浏览器管理,这样用户访问保存了cookie的站点时,浏览器会在报文中自动填充cookie首部行;
  4. 在服务器端系统中保存一个cookie数据库,存有所有用户的信息。
cookie的工作流程:
  1. 客户端访问一个新的站点;
  2. 服务器端为客户创建一个ID,保存到cookie数据库中,并在响应报文中添加首部行:set-cookie:cookie-id;
  3. 客户端浏览器将cookie-id保存到cookie文件中,并在以后发往这个站点的请求报文中添加首部行:cookie:cookie-id;

Web缓存:代理服务器

  1. 浏览器建立一个到web缓存器的TCP连接,并向web缓存器发送一个请求报文;
  2. web缓存器检查本地是否存储了该对象的拷贝:如果有,向初始服务器发送一个条件GET请求报文(if-modified-since标记),检查本地拷贝是否是最新的:服务器会返回一个响应报文,如果是最新的,响应报文中不会包含请求对象;如果不是最新的,响应报文中会包含请求对象,web缓存器更新其本地存储及相应的if-modified-since标记。如果没有,向初始服务器发送一个请求报文,收到请求后,更新本地存储。发送响应报文给客户端浏览器。

FTP(File Transfer Protocol):

  • 控制连接:使用端口号21,在FTP整个传输过程中,一直存在;
  • 数据连接:使用端口号20,每次传输过程,都会创建一个新的数据连接。

邮件服务

  • SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,是一种推(push)类型协议,每个报文都使用7为ASCII码;
  • POP3(Post Office Protocol-Version3):第三版的邮局访问协议,是一种拉(pull)类型协议;
  • IMAP(Internet Mail Access Protocol):因特网邮件访问协议,为用户提供了远程创建文件夹以及在文件夹中移动邮件的命令;
  • HTTP:基于web的电子邮件访问协议。

DNS(Domain Name System)

  • 一个由分层的DNS服务器实现的分布式数据库:根DNS服务器;顶级域(TLD)服务器(如com、org、net、edu、gov);权威DNS服务器,将主机名与IP地址映射。
  • 一个允许主机查询分布式数据库的应用层协议,以UDP做为运输层协议。

DNS工作机理

  1. 主机向本地DNS服务器发出请求;
  2. 本地DNS服务器检查DNS缓存中是否缓存了该请求:如果没有,则执行第三步;如果有,直接返回一个响应报文。
  3. 本地DNS服务器将该报文转发到根DNS服务器中,根DNS服务器返回正确的TLD服务器IP地址;
  4. 本地DNS服务器将该报文转发给TLD服务器,TLD服务器返回正确的权威DNS服务器的IP地址;
  5. 本地DNS服务器将该报文转发给权威DNS服务器,权威DNS服务器返回响应报文,本地DNS服务器缓存该查询结构(有效期通常为2天),跳到第2步;

运输层

  • TCP(Transfer Control Protocol):面向连接的、可靠数据传输的协议。首部是20个字节(源端口号2byte、目的端口号2byte、确认号4byte、序号4byte、长度1byte、标志位1byte、接收窗口2byte、检验校验和2byte、紧急数据指针2byte),TCP数据报填充进首部的确认号是它所期望得到的数据报的序号。TCP根据四元组(源IP、源端口号、目的IP、目的端口号)建立TCP连接,也就是说服务端会为每一个客户端建立不同的TCP连接。
  • UDP(User Data Protocol):无连接的、不可靠数据传输协议。首部是8个字节(源端口号、目的端口号、长度、检验校验和)。UDP根据二元组(目的IP、目的端口号)建立连接,也就是说服务端为所有的客户端建立同一个UDP连接。

TCP三次握手

  1. 客户端向服务器端发送一个SYN报文段(SYN=1,seq=clien_isn),请求建立一个TCP连接;
  2. 服务器端为该TCP连接分配TCP缓存和变量,并向客户端发送一个SYNACK报文段(SYN=1,seq=server_isn,ack=client_isn+1),确认可以建立连接;
  3. 客户端为该TCP连接分配TCP缓存和变量,并向客户端发送一个ACK报文段(SYN=0,seq=client_isn+1,ack=server_isn+1),确认连接建立。这一次可以携带有效载荷。

TCP四次分手

  1. 客户端向服务器端发送一个FIN报文段,表示客户端没有数据需要发送给服务器端了,请求关闭连接;
  2. 服务器端向客户端发送一个ACK报文段,确认可以关闭连接;
  3. 服务器端向客户端发送一个FIN报文段,表示服务器端没有数据需要发送给客户端了,请求关闭连接;
  4. 客户端接收到FIN报文段,向服务器发送ACK报文段,等待30秒后,关闭连接。服务器端接收到ACK后关闭连接。
posted @ 2012-10-01 12:02  刘军newhand_liu  阅读(190)  评论(0编辑  收藏  举报