计算机网络阅读笔记(二)应用层

计算机网络第二章阅读笔记

应用层协议原理

体系结构

客户-服务器体系结构(服务器有固定周知的IP,配备大量主机的数据中心)

P2P体系结构

进程通信

  1. 发起通信的为客户,等待联系的是服务器
  2. 套接字是应用层和运输层之间的接口,也称API
  3. 标识接收进程:主机地址(IP地址)+接收进程的标识符(端口号)

运输层协议提供的服务

可靠数据传输、吞吐量(特定的传输速率)、定时(时延控制)、安全性

Web和HTTP

URL地址:服务器主机名+对象路径名

四个组件:

  1. HTTP响应报文中的cookie首部行
  2. HTTP请求报文中的cookie首部行
  3. 用户端系统保留的cookie文件,由浏览器进行管理
  4. web站点的后台数据库

关键词:Set-Cookie、用户标识

HTTP1.0与HTTP1.1差异

  1. 请求方法,HTTP1.1增加了OPTIONS,PUT, DELETE, TRACE, CONNECT这些Request方法以及新的状态码
  2. HTTP 1.1则支持持久连接。Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。
  3. 在同一个tcp的连接中可以传送多个HTTP请求和响应。
  4. HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。
  5. HTTP 1.1和1.0都是可以扩展的,通过cookie,session,增强应用层

https://blog.csdn.net/hguisu/article/details/8608888

Web缓存与条件GET方法

web缓存器,也叫代理服务器,用于在存储空间内保存最近请求过的对象的副本

web缓存器作用:

  1. 减少对客户请求的响应时间
  2. 减少机构的接入链路到因特网的通信量(不必急于增加带宽)

通过条件GET证实缓存器中的对象是最新的,客户端向服务器发送一个请求询问是否在上一次访问网站的时间后是否更改了页面(请求报文使用GET方法+请求报文包含一个If-Modified-Since首部行)

1
2
3
4
GET / HTTP/1.1  
Host: www.sina.com.cn:80
If-Modified-Since: Thu, 4 Feb 2010 20:39:13 GMT
Connection: Close

如果没有更改:

1
2
3
4
5
6
7
8
HTTP/1.0 304 Not Modified  
Date: Thu, 04 Feb 2010 12:38:41 GMT
Content-Type: text/html
Expires: Thu, 04 Feb 2010 12:39:41 GMT
Last-Modified: Thu, 04 Feb 2010 12:29:04 GMT
Age: 28
X-Cache: HIT from sy32-21.sina.com.cn
Connection: close

如果发生更改就把客户端的请求当作一个普通的Get请求发送相应报文

文件传输协议FTP

使用两个并行的TCP连接来传输文件

控制连接(贯穿整个用户会话):用户标识、口令、改变远程目录

数据连接(每次文件传输都建立新的连接):文件传输

关键词:带外传送

下面是一些常用命令,它们经控制信道以ASCII 文本发送:

USER username:用于向服务器传送用户标识。
PASS password:用于向服务器传送用户口令。
LIST:返回当前目录中的文件列表,文件列表是在(新建的非持久连接)数据连接上传送的。
RETR filename:获取(get) 文件,该命令触发远程主机发起一个数据连接,并在该数据连接上发送所请求文件。
STOR filename:存储 (put)文件到远程主机。

下面是一些常见的状态码及相应短语(如在HTTP中的那样):

331 Username OK, password required
125 data connection already open; transfer starting
425 Can’t open data connection
452 Error writing file

电子邮件

三个组成部分:用户代理、邮件服务器、简单邮件传输协议(SMTP)

SMTP(Simple Mail Transfer Protocol)

用于从发送方的邮件服务器发送报文到接收方的邮件服务器,一般不使用中间邮件服务器发送邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
S: 220 hamburger.edu  // 与服务器创建TCP连接之后,服务器响应220标识服务就绪
C: HELO crepes.fr // 向服务器标识用户身份
S: 250 Hello crepes.fr, pleased to meet you // 服务器返回欢迎信息
C: MAIL FROM: <alice@crepes.fr> // 指定发送者邮箱
S: 250 alice@crepes.fr ... Sender ok //
C: RCPT TO: <bob@hamburger.edu> // 指定接受者邮箱
S: 250 bob@hamburger.edu ... Recipient ok //
C: DATA // 请求发送数据
S: 354 Enter mail, end with “.” on a line by itself // 开始邮件输入
C: Do you like ketchup? //
C: How about pickles? //
C: . // 以包含一个句点的行指示报文结束
S: 250 Message accepted for delivery // 接收成功
C: QUIT // 退出链接
S: 221 hamburger.edu closing connection // 服务器关闭传输通道

HTTP与SMTP

  1. 两者都使用持续连接,但HTTP是拉协议,SMTP是推协议
  2. SMTP限制使用7比特ASCII码格式,而HTTP不限制
  3. 对于既包含文本又包含文件的文档,HTTP将每个对象封装到其独立的响应报文中,而SMTP将所有对象放在一个报文中

邮件访问协议

POP3(Post Office Protocol-ver3)

POP3命令格式 说明
user username user 命令是POP3客户端程序与POP3邮件服务器建立连接后通常发送的第一条命令,参数 username 表示收件人的帐户名称。
pass password pass 命令是在user命令成功通过后,POP3客户端程序接着发送的命令,它用于传递帐户的密码,参数 password 表示帐户的密码。
apop name,digest apop 命令用于替代user和pass命令,它以MD5 数字摘要的形式向POP3邮件服务器提交帐户密码。
stat stat 命令用于查询邮箱中的统计信息,例如:邮箱中的邮件数量和邮件占用的字节大小等。
uidl msg# uidl 命令用于查询某封邮件的唯一标志符,参数msg#表示邮件的序号,是一个从1开始编号的数字。
list [MSG#] list 命令用于列出邮箱中的邮件信息,参数 msg#是一个可选参数,表示邮件的序号。当不指定参数时,POP3服务器列出邮箱中所有的邮件信息;当指定参数msg#时,POP3服务器只返回序号对应的邮件信息。
retr msg# retr 命令用于获取某封邮件的内容,参数 msg#表示邮件的序号。
dele msg# dele 命令用于在某封邮件上设置删除标记,参数msg#表示邮件的序号。POP3服务器执行dele命令时,只是为邮件设置了删除标记,并没有真正把邮件删除掉,只有POP3客户端发出quit命令后,POP3服务器才会真正删除所有设置了删除标记的邮件。
rest rest 命令用于清除所有邮件的删除标记。
top msg# n top 命令用于获取某封邮件的邮件头和邮件体中的前n行内容,参数msg#表示邮件的序号,参数n表示要返回邮件的前几行内容。使用这条命令以提高 Web Mail系统(通过Web站点上收发邮件)中的邮件列表显示的处理效率,因为这种情况下不需要获取每封邮件的完整内容,而是仅仅需要获取每封邮件的邮件头信息。
noop noop 命令用于检测POP3客户端与POP3服务器的连接情况。
quit quit 命令表示要结束邮件接收过程,POP3服务器接收到此命令后,将删除所有设置了删除标记的邮件,并关闭与POP3客户端程序的网络连接。

IMAP(Internet Mail Access Protocol)

  1. 提供创建文件夹和移动邮件的功能
  2. 提供远程文件夹查询邮件的功能
  3. 允许用户代理获取报文组件而不必取回完整邮件

两者比较

  1. IMAP具有摘要浏览功能,可以让用户在读完所有邮件的主题、发件人、大小等信息后,再由用户做出是否下载或直接在服务器上删除的决定。
  2. IMAP可以让用户有选择性地下载邮件附件。例如一封邮件包含3个附件,如果用户确定其中只有2个附件对自已有用,就可只下载这2个附件,而不必下载整封邮件,从而节省了下载时间。
  3. IMAP可以让用户在邮件服务器上创建自己的邮件夹,分类保存各个邮件。

DNS(Domain Name System 域名系统)(采用UDP)

作用:主机名到IP地址转换的目录服务

DNS是

  1. 一个由分层的DNS服务器实现的分布式数据库
  2. 一个使得主机能够查询分布式数据库的应用层协议
  • 递归查询:请求主机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
  • 迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询

https://jocent.me/2017/06/18/dns-protocol-principle.html

DHCP(Dynamic Host Configuration)动态主机配置协议(采用UDP)

四个步骤

  1. discover,客户通过广播发送发现报文
  2. offer,服务器通过广播为客户端提供可选的IP地址、网络掩码、IP地址租用期
  3. request,客户端选定IP,向对应的服务器发送请求报文
  4. ACK,对请求报文进行响应,表示用户可以在租借期内使用该IP地址。

其他参考:

https://blog.csdn.net/qq_35644234/article/details/68961603

https://blog.csdn.net/u014558484/article/details/53150038

0%