计算机网络顶层-应用层常见协议
DNS
DNS提供了主机名和IP地址之间相互转换的服务,DNS协议一般运行在UDP协议上,使用53号端口(长度超过512字节采用TCP)
邮件访问协议
SMTP、POP3、IMAP3种
FTP
FTP采用了两个并行的TCP连接来传输文件,一个是控制连接(端口21),一个是数据连接(端口20),在一个会话中,控制连接一直存在,如果传输多个文件,会有多个数据连接,控制连接控制这些数据连接的打开和关闭
ARP
地址解析协议,根据IP地址获取物理地址
DHCP
动态主机配置协议,配置 IP 地址,包括子网掩码、网关 IP 地址。
HTTP
超文本传输协议,web的核心,HTTP由两个程序实现:一个客户程序和一个服务器程序。
请求报文:请求行(方法字段、URL字段、HTTP版本字段),首部行,实体体
响应报文:状态行(版本、状态码),首部行,实体体
可能的请求
GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式
PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置
HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件
OPTIONS:查询响应URI支持的HTTP方法
可能的状态码
1** 服务器收到请求,需要客户端继续执行操作
2** 成功,操作被成功接受并处理(200 ok)
3** 重定向(301 资源已经移动到其他地方,游览器会自动跳转到新地址)
4** 客户端错误(400请求方式错误)
5** 服务器错误(500服务器内部错误)
一个完整的HTTP连接过程
在域名解析之前往往包括
DHCP配置主机信息
ARP解析MAC地址->
三次握手
SYN:同步字段
seq:发送多少成功接受字段
ACK:确认字段
ack:确认接受数据
为什么要三次呢?
如果说不缺认一下的话,已经失效的请求就会和正常请求一样,服务器端以为客户端正要发送数据,实际上客户端什么都没做,浪费了资源。
四次挥手
整张图非常直观了的描述了四次挥手
为什么上图中的客户在TIME-WAIT状态必须等待2MSL时间呢?
第一,为了保证A发送的最后一个ACK报文能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认。B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。如果A在TIME-WAIT状态不等待一段时间,而是在发送完ACK报文段后就立即释放连接,就无法收到B重传的FIN+ACK报文段,因而也不会再发送一次确认报文段。这样,B就无法按照正常的步骤进入CLOSED状态。
第二,A在发送完ACK报文段后,再经过2MSL时间,就可以使本连接持续的时间所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求的报文段。
参考资料https://blog.csdn.net/qq_38950316/article/details/81087809