因特网协议概述
常用协议 | |
---|---|
应用层 | HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、DNS(域名系统)、DHCP(动态主机配置协议)、SNMP(简单网络管理协议) |
运输层 | TCP(传输控制协议)、UDP(用户数据报协议)、SCTP(流控制传输协议)、DCCP(数据报式传输协议) |
网络层 | IP(Internet Protocol) 、ICMP(Internet Control Message Protocol)、ARP(地址解析协议)、RAR(逆地址解析协议)、OSPF(开放最短路径优先)、BGP(边界网关协议) |
链路层 | PPP(点对点协议)、HDLC(高级数据链路控制)、Ethernet(以太网)、Wi-Fi(无线局域网)、ATM(异步传输模式)、FDDI(光纤分布式数据接口) |
物理层 | IEEE 802.3(以太网)、IEEE 802.11(Wi-Fi)、SONET(同步光纤网络)、DSL(数字用户线路)、USB(通用串行总线)、HDMI(高清晰度多媒体接口) |
应用层协议原理
进程通信
客户发起通信、服务器等待联系
套接字
- 进程通过套接字这个软件接口,向网络发送和接收报文
- 应用层与运输层的接口
- 应用程序与网络的应用程序编程接口(API)
- 提供了一种抽象层,隐藏了底层网络协议的细节
进程寻址
主机地址:IP地址
目的主机中指定接收进程的标识符:端口号
应用服务要求
- 可靠数据传输
- 吞吐量
- 定时(时延限制)
- 安全性
Web和HTTP
- (Hypertext Transfer Protocol)
- TCP为HTTP提供可靠数据传输服务
HTTP是无状态协议
- 当客户端发送HTTP请求时,它必须提供所有必要的信息(如请求方法、URL、头部字段等),服务器根据这些信息来处理请求并发送相应的HTTP响应。
- 每个HTTP请求都是独立的,服务器在发送响应后,不会保留客户端的任何状态信息,也不会记录客户端的上下文。
HTTP报文格式
请求报文
HTTP请求报文 | ||
---|---|---|
请求行 | GET /somedir/page.html HTTP/1.1 | 方法字段、URL字段、HTTP版本字段 |
首部行 | Host:www.someschool.edu | 指明对象所在主机 |
首部行 | Connection:close | 非持续连接 |
首部行 | User-agent:Mozilla/5.0 | 指明用户代理,即浏览器类型是Firefox |
首部行 | Accept-language:fr | 希望得到对象的法语版本 |
方法字段
- GET:用于请求获取特定资源,通常用于获取网页、图片、文本等静态内容。该方法是幂等的,即多次执行相同的GET请求应该得到相同的结果。实体体为空
- POST:用于向服务器提交数据,通常用于提交表单数据、上传文件等操作。POST请求可能会引起服务器状态的变化,不是幂等的。
- PUT:用于向服务器上传新的资源,或者更新现有资源。PUT请求应该是幂等的,即多次执行相同的PUT请求会得到相同的结果。
- DELETE:用于请求删除指定的资源。DELETE请求应该是幂等的,即多次执行相同的DELETE请求会得到相同的结果。
- HEAD:与GET方法类似,但只返回响应头部,不返回实际内容。主要用于获取资源的元数据或检查资源是否存在。
- OPTIONS:用于获取目标资源支持的通信选项。服务器可以返回允许的方法、支持的头部字段等信息。
- TRACE:用于追踪请求在传输链路上的处理情况。服务器会将接收到的请求原样返回给客户端,用于测试和诊断。
- CONNECT:用于建立与目标资源的隧道连接,通常用于代理服务器。
条件GET:解决缓存器的对象副本为旧副本的问题
if-modified-since:Wed,9 Sep 2015 09:23:24
响应报文
HTTP响应报文 | ||
---|---|---|
状态行 | HTTP/1.1 200 OK | 协议版本、状态码、相应状态信息 |
首部行 | Connection:close | 非持续连接 |
首部行 | Date:Tue,18,Aug,2015 15:44:04 GMT | 服务器从文件系统中检索到该对象,将其插入响应报文并发送该响应报文的时间 |
首部行 | Server:Apache/2.2.3(CentOS) | 报文由Apache Web服务器产生 |
首部行 | Last-Modified:Tue,18,Aug 2015 15:11:03 GMT | 对象创建/最后修改的时间 |
首部行 | Content-Length:6821 | 被发送对象的字节数 |
首部行 | Content-Type:text/html | 实体体的对象是HTML文本 |
实体体 | (data data data data data …) | 所请求的对象本身 |
状态码
1xx(Informational):表示请求已经被接收,继续处理中。
2xx(Success):表示请求已成功处理并得到响应。
- 200 OK:请求成功,服务器正常返回请求的数据。
- 201 Created:请求成功,并在服务器上创建了新的资源。
- 204 No Content:请求成功,但响应不包含任何实体内容。
3xx(Redirection):表示需要进行进一步的操作,以完成请求。
- 301 Moved Permanently:请求的资源已永久移动到新的URL。
- 302 Found:请求的资源暂时移动到新的URL。
- 304 Not Modified:资源未修改,客户端可以使用缓存的版本。
4xx(Client Error):表示客户端发送的请求有错误。
- 400 Bad Request:通用差错代码,请求无效,服务器无法理解。
- 401 Unauthorized:请求需要身份验证。
-403 Forbidden:服务器拒绝请求访问资源。 - 404 Not Found:请求的资源不存在。
5xx(Server Error):表示服务器在处理请求时发生错误。
- 500 Internal Server Error:服务器内部错误。
- 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效的响应。
- 503 Service Unavailable:服务器暂时无法处理请求,通常是由于过载或维护。
- 505 HTTP Version Not Support:服务器不支持请求报文的HTTP协议版本。
cookie
解决HTTP的无状态协议
Web缓存
Web缓存器,也称为代理服务器
电子邮件
SMTP
- (Simple Mail Transfer Protocol)
- 一般不使用中间邮件服务器
- HTTP是拉协议,TCP连接由想接收文件的机器发起;SMTP是推协议
DNS域名系统
- 主机名转换为IP地址
- 4元组:(Name,Value,Type,生存时间TTL)
根DNS服务器、顶级域服务器(TLD)、权威DNS服务器
DNS缓存