文章目录
协议就是一种约定。 自定制协议(应用层协议):被程序员定义出来的协议。
1、域名系统DNS
1.1 域名系统概述
域名系统DNS:是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址
- 许多应用层软件经常使用域名系统DNS,但计算机的用户只是间接而不是直接使用DNS
- 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS
- DNS使大多数名字都在本地进行解析,仅少量解析需要互联网上通信
域名的解析过程:当需要把主机名解析成IP地址时,应用进程调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器,本地域名服务器查找域名后,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP地址后即可进行通信
1.2 域名结构
域名的组成:由标号序列组成,各标号之间用点隔开
标号的规定:域名中的标号由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写;级别低的域名写在左边,级别高的写在右边;由多个标号组成的完整域名总共不超过255个字符
- 顶级域名的分类:
- 国家顶级域名:如cn、us
- 通用顶级域名:如com、net、org、edu
- 基础结构域名:只有arpa,用于反向域名解析,又称为反向域名
- 二级域名:
- 类别域名:ac、com、edu、gov
- 行政区域名:bj、js
1.3 域名服务器
DNS服务器采用分层似的结构:最上层为根域名服务器;第二层为顶级域名服务器,第三层为authoritative域名服务器;
还有一个重要的本地域名服务器,当本地主机要访问域名服务器时,可以先访问本地的域名服务器,然后由本地域名服务器作为代理来访问其它的分层结构的域名服务器;
分级的域名服务器示意图:
域名服务器分类:
- 根域名服务器:是层次最高的域名服务器。所有根域名服务器都知道所有顶级域名服务器的域名和IP地址。本地域名服务器只要无法解析,就求助于根域名服务器。
- 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。
- 权限域名服务器:负责一个区的域名服务器。当权限域名服务器还不能给出回答时,就会告诉发出查询请求的DNS客户,下一步应找哪一个权限域名服务器。
- 本地域名服务器:并不属于域名服务器层次结构,但很重要。当主机发出DNS查询请求时,这个查询请求报文发给本地域名服务器。
提高域名服务器可靠性: DNS域名服务器把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其余是辅助域名服务器。当主域名服务器出现故障时,辅助域名服务器就可以保证DNS的查询工作不会中断。
域名的解析过程:主机向本地域名服务器查询
1)采用递归查询:如果本地域名服务器不知道查询域名的IP,则本地域名服务器以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让主机自己进行下一步查询。
2)采用迭代查询:当根域名服务器收到本地域名服务器发出的查询请求报文时,要么给出要查询的IP地址,要么告诉本地域名服务器下一步应向哪个域名服务器查询,然后让本地域名服务器进行后续查询。根域名服务器通常把自己知道的顶级域名服务器的IP告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。
2、HTTP协议
即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
HTTP协议在传输层使用的协议是TCP协议。
&bsp;
2.1 HTTP工作原理
HTTP协议采用了请求/响应模型。
- 客户端向服务器发送一个请求报文:包含请求的方法、URL、协议版本、请求头部和请求数据。
- 服务器以一个状态行作为响应:包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
1)客户端连接到Web服务器:一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
2)发送HTTP请求:通过TCP套接字,客户端向Web服务器发送一个文本的请求报文。(一个请求报文由请求行、请求头部、空行和请求数据4部分组成。)
3)服务器接受请求并返回HTTP响应:Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。(一个响应由状态行、响应头部、空行和响应数据4部分组成。)
4)释放连接TCP连接:若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5)客户端浏览器解析HTML内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作TCP 三次握手的第三个报文的数据发送给服务器;
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
- 释放 TCP连接;
- 浏览器将该 html 文本并显示内容;
2.2 HTTP数据包格式
HTTP请求
请求首行
请求方法 资源路径 协议版本 \r\n
请求体
key:value \r\n
空行\r\n
正文
HTTP响应
首行:
版本号 状态码 状态码解释\r\n
Header:
key:value \r\n
空行\r\n
正文
2.3 请求方法
方法 | 解释 | 支持的版本 |
---|---|---|
GET | 获取资源 | 1.0、1.1 |
POST | 传输实体主体 | 1.0、1.1 |
PUT | 传输文件 | 1.0、1.1 |
HEAD | 后去报文首部 | 1.0、1.1 |
DELETE | 删除文件 | 1.0、1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINE | 断开连接关系 | 1.0 |
GET与POST请求的区别
-
GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连;POST方法是把提交的数据放在HTTP包的正文中。
-
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
-
Post方法比Get方法更加私密,想要安全,需要用ssl加密。
-
Get能被缓存,数据在URL对所有人可见;POST不能缓存,数据不可见。
2.4 HTTP的状态码
类别 | 解释 | |
---|---|---|
1XX | informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务端错误状态码) | 服务器处理请求出错 |
常见的状态码:200(OK)、404(Not Found)、403(Forbidden)、302(Redirect)、504(Bad Gateway)
2.5 请求体(Header)
- Host:请求的主机名称
- Connection:keep-alive(长连接)
- User-Agent:浏览器的版本信息和操作者系统的信息
- Content-Type:正文类型
- Accept-Encoding:能够接收的编码格式
- Accept-Language:能够接收的语言
2.6 网址URL
以http://user:passwd@www.baidu.com:80/news/index.html?id=250&page=1 为例:
- http:协议方案名
- user:passwd:用户名和密码
- www.baidu.com:服务器
- /dir/index.html:带层次的文件目录
- ?id=250&page=1:查询
3、文件传输协议FTP
3.1 FTP概述
文件传输协议FTP:是互联网上使用最广泛的文件传送协议,提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
3.2 FTP的基本工作原理
FTP的特点:只提供文件传送的基本服务,使用TCP可靠性运输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
FTP工作流程:FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务。
1)打开熟知端口(21),使客户进程能够连接
2)等待客户进程发出连接请求
3)启动从属进程处理客户进程发来的请求。(从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建一些子进程)
4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的
3.3 简单文件传送协议TFTP
TFTP:是很小且易于实现的文件传送协议,使用客户服务器方式。其使用UDP数据报,因此,TFTP需要有自己的差错改正措施,TFTP只支持文件传输而不支持交互。
优点:TFTP可用于UDP环境;TFTP代码所占的内存小
TFTP的主要特点:
1)每次传送的数据报文中有512字节的数据,但最后一次可不足512字节
2)数据报文按序编号,从1开始
3)支持ASCII码或二进制传送
4)可对文件进行读或写
5)使用很简单的首部
TFTP工作流程:TFTP客户进程发送一个请求报文给TFTP服务器进程,其端口号为69。TFTP服务器进程选择一个新的端口和TFTP客户进程通信。
TFTP传输长度:若文件长度恰好为512字节整倍数,则文件传送完毕后,还必须在发送一个只含首部而无数据的数据报,作为文件结束的标志;若不是整倍数,则最后一个不足512字节的报文,作为文件结束的标志。
3.3 简单邮件传输协议SMTP
用于邮件的协议;端口号为25;使用TCP协议。
它是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。smtp服务器是遵循smtp协议的发送邮件服务器,当接收时作为smtp服务端,当发送时做smtp客户端。SMTP是一个推协议,它不允许根据需要从远程服务器上“拉”来消息。如果客户使用邮件客户端收取邮件,需要使用POP3或IMAP协议,向邮件服务器拉取邮件数据,此时该服务器作为POP3或IMAP服务器。
4、动态主机配置协议DHCP
DHCP协议:负责给互联网上的计算机提供动态的IP地址。
需要配置的项目:
1)IP地址
2)子网掩码
3)默认路由器的IP地址
4)域名服务器的IP地址
4.1 DHCP工作流程
需要地址的客户机先在网上发广播包请求地址,DHCP服务器收到广播包后在自己的地址池里选一个地址(包括配套的子网掩码和网关),租给该客户机,该客户机再给DHCP服务器一个确认。
注意:DHCP服务器本身必须是静态地址!!!
地址池 与 地址租约
在IP地址的动态分配中,DHCP客户端想DHCP服务器发送IP地址请求。DHCP服务器会维护一个 IP地址池,DHCP从地址池从取出一个IP回应给DHCP客户端。在地址分配时,DHCP服务器也会指定回应给DHCP客户端的IP地址的租约期,该地址只有在该租约期内可用,不过DHCP客户端可用在租约期内请求延长租约(更新租约期)。