- 分层与相关协议
- DHCP:动态主机配置协议 Dynamic Host Configuration Protocol
- DNS:域名系统 Domain Name System
- HTTP:超文本传输协议 Hypertext Transfer Protocol
- TCP:传输控制协议 Transmission Control Protocol
- UDP:用户数据报协议 User Datagram Protocol
- ICMP:控制报文协议 Internet Control Message Protocol
- IGMP:组管理协议 Internet Group Management Protocol
- ARP:地址解析协议 Address Resolution Protocol
- RARP: 反向地址转换协议 Reverse Address Resolution Protocol
- TCP相关
- UDP相关
- HTTP相关
分层与相关协议
DHCP:动态主机配置协议 Dynamic Host Configuration Protocol
DNS:域名系统 Domain Name System
HTTP:超文本传输协议 Hypertext Transfer Protocol
TCP:传输控制协议 Transmission Control Protocol
- 面向连接,可靠通信;
- 一对一;
- 头大(20字节);
- 有流量、拥塞控制;
-
UDP:用户数据报协议 User Datagram Protocol
无连接,快速;
- 一对一,一对多,多对多;
- 头小(8字节);
- 网络拥堵不影响发送速率;
- 面向报文。
ICMP:控制报文协议 Internet Control Message Protocol
主机、路由器之间传递控制消息,由IP提供服务。IGMP:组管理协议 Internet Group Management Protocol
主机、组播路由器之间传递分组消息,由IP提供服务。ARP:地址解析协议 Address Resolution Protocol
根据IP地址获取MAC地址。RARP: 反向地址转换协议 Reverse Address Resolution Protocol
根据MAC地址获取IP地址。TCP相关
TCP连接建立与断开
连接建立:三次握手

- Client发起建立连接请求[SYN],序列号seq=x,发送完进入
**SYN_SEND**状态; - Server收到请求后,发送对应ack=x+1的应答[ACK]与seq=y的建立连接请求[SYN],发送完进入SYN_RCVD状态;
- Client收到请求后,发送对应ack=y+1的应答[ACK]并进入ESTABLISHED状态;
Server收到请求后,进入ESTABLISHED状态,TCP连接建立完成。
连接断开:四次挥手

Client发送断开连接请求[FIN],序列号seq=x,发送完进入FIN_WAIT_1状态;
- Server收到请求后,发送对应ack=x+1的应答[ACK],发送完进入CLOSE_WAIT_1状态,等待之前连接中传输中的数据传输完成;
- Client收到请求后,进入FIN_WAIT_2状态,等待服务器发送关闭连接的请求;
- Server传输完数据打算关闭连接时,发送断开连接请求[FIN],序列号seq=y,发送完进入LAST_ACK状态等待Client的通知;
- Client收到请求后,发送对应ack=y+1的应答[ACK],发送完进入TIME_WAIT状态,等待Server可能继续发送的数据;
- Server收到请求后,关闭连接并进入CLOSED状态;
- Client在等待固定时间后,如果没收到Server的其他数据,说明Server已成功关闭连接,自己也进入CLOSED状态。
TCP协议为何建立连接
为了可靠连接,需要维持一个状态,比如同步发送、接收窗口的大小,包的序号等;
连接的确定需要靠(IP:Port)这样的元组格式。TCP的粘包问题
- 前提:由于TCP存在包的拆分(数据超过最大限制MTU Maximum Transmission Unit后会分为多个传输单元,最大的报文传输大小为MSS Maximum Segment Size,MTU - header大小 = MSS),拆分后的数据发送到buffer中,buffer满了再发送(接收方也有一个buffer);
- 原因:
- 根据域名在DNS服务器查找IP地址;
- 通过Ping程序发送ICMP包;
- 同一网段的情况下,调用IP层的ARP协议请求广播(不同网段的情况下,交给路由器处理),查找目标主机的MAC地址;
- 目标主机ARP协议收到请求后,将本机MAC地址填充并发送ARP应答回到请求发送方;
- 请求发送方发送ICMP数据到目标主机;
- 目标主机响应ICMP包;
- 请求主机收到目标主机的ICMP响应包。
UDP相关
作为一个无连接协议,不建立连接,不保证可靠交付,传输速度受限于数据生成的速度和网络带宽;
可以同时向多个其他机器发送相同的消息;
包头很小,不受拥塞控制;
交付给IP层后,数据不会被拆分或合并。HTTP相关
HTTP请求头
HTTP与HTTPS
- HTTPS协议需要申请证书(由数字证书认证机构CA颁发),不能在同一IP地址上绑定多个域名;
- HTTPS工作流程:
- 建立TCP连接;
- Client验证Server的数字证书;
- 协商加密算法、密钥;
- SSL安全加密隧道协商完成;
- 网页以加密方式传输,对称加密保证加密,hash算法保证不被篡改数据。
|
| HTTP | HTTPS | | —- | —- | —- | | 安全性 | 明文传输 | 对称加密+hash | | 速度 | 快,只有TCP建立连接的3个包 | 慢,除了TCP连接包外还有SSL握手的9个包 | | 端口 | 80 | 443 |
反向代理 Reverse Proxy
- 含义
反向代理是指使用代理服务器接受请求,并将该请求转发给内部服务器,并将内部服务器的结果返回给发起请求的客户端,代理服务器对外表现为一台服务器。 - 负载均衡
将外部请求动态转发给内部服务器达到负载均衡的目的。 - 缺点
代理服务器需要建立两个连接(对外客户端和对内服务器),可能会成为瓶颈。输入URL到返回网页的过程
- DNS域名解析获取IP地址;
- Client到Server建立TCP连接;
- Client发送HTTP请求;
- Server处理请求并返回HTTP报文;
- 浏览器解析渲染页面。
