计算机网络——应用层
应用层作用
每个应用层协议都是为了解决某一类应用问题,而问题的解决是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议
应用层体系结构
-
客户-服务器体系结构(client-server architecture)
有一个总是打开的主机成为服务器,他服务于来自许多其它成为客户的主机的请求。客户之间不直接通信。另外,服务器具有一个固定的,周知的地址,IP地址。应用:Web,FTP,Telnet和电子邮件。 -
P2P体系结构(P2P architecture)
对位于数据中心的专用服务器有最小的(或者没有)依赖,应用程序在间断连接的主机对之间使用直接通信,这些主机对称为对等方。应用:文件共享(BitTorrent),对等方协助下载加速器(迅雷),网络电话(Skype)和IPTV(迅雷看看和 PPStream) -
混合的体系结构(C/S + P2P)
即时讯息应用,服务器跟踪用户IP地址,用户之间P2P直接发送报文
域名系统DNS:将域名解析成IP地址
因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS:名字到域名的解析是由若干个域名服务器完成的,域名服务器程序在专设的节点上运行,运行该程序的机器称为域名服务器
- 因特网的域名结构:任何一个连接在因特网上的主机或路由都有一个唯一的层次结构的名字,即域名,由若干个分量组成,各分量用点隔开:
...三级域名.二级域名.顶级域名
,各分量代表不同级别的域名,查IP时用递归查询,比较麻烦的,所以每个域名服务器都有维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息记录
文件传输协议FTP
是专门针对于位于两地的主机进行数据文件交换的一种协议,文件交换的一个难点是文件系统种类很多且差别很大,所以怎么把不同格式的文件传到主机上是FTP要解决的:
1)计算机存储数据的格式不同
2)文件的目录结构和文件命名的规定不同
3)对于相同的文件存取功能,操作系统使用的命令不同
4)访问控制方法不同
FTP特点:
- FTP基于TCP提供可靠的数据传输
- FTP的主要功能呢是减少或消除在不同操作系统下处理文件的不兼容性
- FTP使用客户服务器方式,一个FTP服务器进程可为多个客户提供服务
- FTP服务器进程由两大部分组成,一个主进程负责接收新的请求,另外有若干个从属进程负责处理单个进程
主进程的工作步骤
1)打开端口21,使客户进程能够连接上,等待客户进程发出连接请求
2)有连接后,就启动从属进程来处理客户进程发来的请求,从属进程对客户进程的请求处理完毕后就终止,但从属进程在运行期间根据需要还可能创建其他一些子进程
3)处理完毕后就回到等待状态,继续接收其他客户进程发来的请求,完成所谓的一对多。
由此可见,主进程与从属进程的处理是并发地进行的
FTP的两个连接:控制连接和数据连接
在上述的主进程从属进程的工作中,建立了两个连接:
why建立两个连接
FTP主要要解决的问题是屏蔽在不同操作系统的差异性,数据是不会产生差异的,差异主要就是不同操作系统下的控制信息,因此我们要把数据传输部分和控制部分产生一个分离,从而实现大部分的数据部分的复用,而只需要在每个应用程序之间设置差异部分,只需要在控制连接部分修改就行了
- 控制连接在整个会话期间一直保持打开,FTP客户发出的传送请求通过控制连接发送给服务端的控制进程,但控制连接不用来传送文件
- 数据连接是实际用于传输的连接,服务器端的控制进程在接收到FTP客户发来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务端的数据传输过程
两个端口号
TCP中是一个链接一个端口,那么既然FTP用到了两个链接就需要两个端口:
- 当客户进程向服务器进程发出建立请求时,要寻找链接服务器进程的端口(21),同时还要告诉服务器进程自己的另一个端口号用于建立数据传送链接,(客户的端口号)
- 接着,服务器进程用自己传送数据的端口(20)与客户进程所提供的端口号码建立数据传送连接
由于使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。另外使用两个独立的连接使得协议更加简单以及更加容易实现;在传输文件时还可以利用控制连接(例如发送请求中止传输)
TFTP:简单文件传送协议(端口号69)
将要传送的数据仅从分块,每次传送的数据块中有512各字节的数据,最后一次可以不足512。分块的数据块叫做PDU,每个块都按序编号从1开始,只可以对文件进行读或写,只支持ASCII码或二进制码
原理:发送完一个文件块就等待对方确认,确认时指明所确认的块编号,并配置一个确认时间
远程终端协议TELNET
是一个简单的远程终端协议:通过应用程序给一个IP地址,就可以把这个IP地址对应电脑的桌面显示在“我”的桌面上。
客户服务器模式,本地是客户,远程是服务器
客户软件把用户的击键和命令转换成NVT格式,并送交服务器,服务器软件把收到的数据和命令,再从NVT格式转换为系统所需的格式,再向用户返回数据时再转换为NVT格式,本地客户再转换成本地系统所需的格式
万维网WWW
- 使用URL来标志万维网上各种文档,使每一个文档在整个因特网的范围内具有唯一标识符
- 在万维网客户程序与服务器程序之间进行交互所使用的协议是超文本传送协议HTTP,HyperText Transfer Protocol, HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。(用何协议实现万维网个各种超链的连接?)
- 怎样使各种万维网文档都能在因特网上的各种计算机上显示出来(有文档,有图片,有视频,有链接……这么复杂的文档):使用超文本标记语言HTML
-
URL的一般形式:大小写没要求
<URL的访问方式>://<主机>:<端口>/<路径>,URL访问方式就是我们的协议,其中有http超文本传送 协议i,有ftp文件传送协议,News新闻协议;定位ip地址(主机); 端口:定义应用程序 -
HTTP操作流程:
客户端通过DNS解析一个URL,通过IP地址找到客户端到服务器的路径,客户端发起一个HTTP会话到服务器,然后建立TCP链接。客户端给服务端发送一个HTTP请求文档(GET),服务器发送一个HTTP响应文档,最后释放TCP连接
- 代理服务器
又叫做万维网高速缓存,它代表浏览器发出HTTP请求;万维网高速缓存将最近的一些请求和响应存在本地磁盘中。
:浏览器访问因特网的服务器时,要先与校园网的高速缓存建立TCP连接,并向高速缓存发出HTTP请求报文
HTTP报文
分类:HTTP请求报文,HTTP响应报文
HTTP报文的常用一些方法
GET:请求读取URL所标志的信息(获取一个注册页面
POST:给服务器添加信息(注册一个新的信息,生成一个新的URL
PUT:在指明的URL下存储一个文档(对注册的URL的信息进行修改
DELETE:(把注册的信息修改掉
请求报文组成:
在请求报文中,开始行就是请求行
实例:
响应报文组成
实例:
状态码:
1XX,表示通知信息的,如请求收到了或正在进行处理
2XX,表示成功
3XX,表示重定向,表示完成请求还必须采取进一步的行动
4XX,表示客户的差错,如请求中有错误的方法或不能完成
5XX,表示服务器的差错,如服务器失效不能完成请求
拿到数据后怎么在网页上进行一个显示
用户信息:在服务器上存放用户的信息 cookie
万维网站点可以使用Cookie来跟踪用户,表示在HTTP服务器和客户之间传递的状态信息……就是在每个网页中都能知道是哪个用户登陆的
工作原理:
1,当用户在浏览某个使用Cookie的网站时,该网站的服务器就为该用户产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。接着在给该用户的HTTP响应报文中添加一个Set-cookie
的首部行
2,当用户收到这个有Set-cookie
的响应后,其浏览器就在它管理的特定Cookie文件中添加一行(包括这个服务器的主机名和Set-cookie)后面的识别码,当之后该用户继续浏览这个网站时,每次发送HTTP请求报文,浏览器都会从Cookie文件中读取这个网站的识别码,并放到HTTP请求报文的Cookie首部中,就能知道是谁在访问
简单邮件传送协议SMTP
三个阶段:
- 连接建立:连接时在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的,SMTP不使用中间的邮件服务器
- 邮件传送
- 连接释放:右键发送完毕后,SMTP应释放TCP连接
- POP, IMAP, SMTP
动态主机配置协议DHCP(跳)
一些我认为的重点整理
① DNS
--------域名解析过程(用到DNS缓存
--------DNS指针查找(反向查找、逆向解析)的基本原理
② FTP
--------两种工作模式,PASV+PORT
--------各种FTP指令和响应码
--------断点续传和匿名FTP
③ HTTP
--------请求报文、响应报文、请求头各种字段、响应头各种字段
-------- 一次完整HTTP所经历的步骤
④ HTTPS
--------HTTPS的详细握手过程、
--------摘要算法、数字签名、数字证书的原理和过程
http2.0 和 http1 的区别
Cookies和Session的区别
GET和POST的区别
DNS(UDP+53)
域名解析过程
- 客户机(主机)提出域名解析请求,并将该请求发送给本地域名服务器,客户机向本地域名服务器的查询一般采用递归查询
- 当本地的域名服务器收到请求后,就先查询本地的域名缓存,如果有该项记录,本地的域名服务器就直接把查询的结果返回
- 如果本地的缓存中没有该记录,那么本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域的主域名服务器的IP地址
- 本地服务器再向上一步返回域名服务器发送请求,然后接收请求的服务器查询自己的域名缓存,如果没有该记录,就返回相关的下一级域名服务器的地址
- 重复步骤四,知道找到正确的记录
- 本地域名服务器把返回的结果存到域名缓存,以备下一次使用,同时将结果返回给客户机
域名解析例子
对www.neu.edu.cn
进行解析:假设不在本地域名服务器的管辖范围内,用户域名服务器采用迭代查询的方式向根域名服务器发出请求。
根域名服务器传回能够解析cn
域名的域名服务器地址,cn再传回能够解析edu.cn
的域名服务器,这样树形结构地往下访问,最后在neu.edu.cn
域名服务器中解析出域名地址www.neu.edu.cn
对应地IP地址
DNS指针查找(反向查找、逆向解析)的基本原理
首先要知道,对于一个IP地址,很有可能不存在反向的映射。反向DNS解析(rDNS)解析IP地址的过程使用PTR记录。互联网的反向DNS数据库植根于arpa 顶级域名。
反向解析与正向解析在查询方式细节上不一样,如正向解析是从根出发,而反向解析中则以in-addr.arpa(此部分内容时固定的)开始
-
★せの~
-
★域名反向解析即从IP地址到域名的映射,由于在域名系统中,一个IP地址可以对应多个域名,因此理论上IP出发去找域名,理论上应该遍历整个域名树,但在Internet上是不现实的。
为了完成逆向域名解析,系统提供一个逆向解析域(特殊域),这样待解析的IP地址就会被表达成像域名一样的可显示形式,后缀以逆向解析域域名结尾。比如 1.2.3.4 的查询节点就是 4.3.2.1.in-addr.arpa。两种表达方式中IP地址顺序恰好相反,因为域名结构是自底向上(从子域到域),而IP地址是自顶向上(从网络到主机)的,**实质上逆向域名解析是将IP地址表达成一个域名,以地址作为索引的域名空间??**这样逆向解析的很大部分可以纳入正向解析中?? -
邮件服务器的反向域名解析功能,启动该功能,拒绝接收所有没有注册域名地址发来的信息。多数垃圾邮件发送者使用动态分配或者没有注册域名的IP地址来发送邮件,以逃避追踪。
例子
例如,要对IP地址进行反向查找,将查找8.8.4.4域名的PTR记录4.4.8.8.in-addr.arpa,并找到指向该域名的PTR记录(假设说)google-public-dns-b.google.com。
然后,如果上述域名指向8.8.4.4就证明ok
FTP
FTP两种工作模式:PASV+PORT
感谢https://blog.****.net/qq100440110/article/details/51058444
PORT(主动模式)
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登陆成功后要list列表或读取数据时,客户端随机开放一个端口(1024以上),发送PORT命令到FTP,告诉服务器,客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据
PASV(被动模式)
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登陆成功就要list列表或读取数据时,发送PASV命令到FTP服务器,告诉服务器我被动接收,服务器收到后在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端,客户端再连接到服务器开放的端口进行数据传输
两种模式的比较
主动模式传送数据是服务器连接到客户端的端口,被动模式是客户端连接到服务器。
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难
被动模式只需要服务器端开放端口给客户端连接就ok了,服务器端开放的端口随机
FTP的各种指令和响应码
参考:https://blog.****.net/qq981378640/article/details/51254177
也不知道哪些比较重要,之后再补充记录吧
断点续传
断点续传是在发送的过程中,记录下发送的进度,当出现包括终端等发送出错的情况下,断开连接。等下次网络好了,继续发送剩余文件的过程
(maybe之后实现ftp一哈
匿名FTP
HTTP(TCP+80)
基础知识
HTTP是一种无状态协议,即服务器不维护任何关于客户端过去发送的消息。HTTP使用TCP作为传输层协议:
- HTTP客户首先发起一个与服务器的TCP连接,服务器默认端口是80,所以服务器在80端口监听客户端的请求
- 客户端发送到服务器的TCP连接(创建socket),服务器接收来自客户端的TCP连接
- 客户端和服务器之间通过http报文进行相关信息的交换
- 最后关闭TCP连接
针对上述连接,HTTP有两种连接方式
- 非持续连接:每个对象交互完之后都会关闭TCP连接(就是给完响应报文之后就立即关闭TCP连接了),有新请求时再创建连接,而操作系统建立TCP连接会造成很大的资源开销。客户端使用浏览器并行的建立TCP连接请求资源,会给服务器造成更大的压力
- 持续连接:HTTP1.1中新引入的持续连接传输方式
1)服务器在发送响应后,保持TCP连接,用于后续对象的传输,从而减少服务器端连接次数的需要,减少服务器端对socket资源的占用,增大服务器端的负载能力
2)流水线传输方式:客户端可以一次性发送所有请求,然后等待接收响应,理想情况下,收到的时间大约是1RTT
HTTP请求消息
a) 请求报文的一般格式
关于方法:
-
HTTP1.0版本中请求所支持的方法:
GET:想服务器发送指定URL的对象
POST:用于向服务器提交表单,也可以请求Web页面,
HEAD:服务器发送回来的响应报文,该报文中不包含请求的对象 -
HTTP1.1版本中除了GET、POST、HEAD之外新定义的方式
PUT:将上传的字段放在实体主体字段中,目标路径由URL标明
DELETE:删除指定URL对应的字段
HTTP响应消息
一次完整HTTP所经历的过程
.
比如在浏览器中输入www.baidu.com
后执行的全部过程
1. 客户端浏览器通过DNS解析到www.baidu.com
的IP地址220.181.27.48
,通过这个IP地址找到客户端到服务器的路径。客户端发起一个HTTP会话到220.181.27.48
,然后通过TCP进行封装数据包,输入到网络层
2. 客户端的网络层不用关心应用层或传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作。就是通过查找路由表决定通过哪个路径到达服务器
3. 客户端的链路层,包通过链路层发送到网络层,发送IP数据包到达服务器的地址
还是另起一文吧………………
Cookies和Session的区别
cookie是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据session其实指的是访问者从到达某个特定主页到离开为止的那段时间,session其实是利用了cookie进行处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个cookie,当这个session结束时,其实就是意味着这个cookie过期了cookie数据保存在客户端,session数据保存在服务器端
GET和POST的区别
1,GET:保存在HTTP包头,是明文,数据不安全,长度较小,适用数据查询
2,POST:保存在HTTP正文,既可是明文也可以是密文,数据安全,支持较大的数据传输,适用于修改数据
HTTP和HTTPS的详细握手过程
是什么啦,和http啥区别啦,
一些摘要算法、数字签名、数字证书的原理和过程
大概了解一下要紧的啦,晚上再来看啦
http2.0和http1的区别
seeeeeeeeeee yooooooooooou
まだ、じあ