OSI七层模型
一个数据包的发送,是从A从上层一路加头包装到底层,在由底层一路解头获取数据包的过程
七层模型 | TCP/IP模型 | 说明 |
---|---|---|
应用层 | 应用层 | 提供服务,http、FTP |
表示层 | -- | 加解密、压缩、解压 |
会话层 | -- | session,DNS |
传输层 | 传输层 | 建立,管理和维护端对端到连接,如TCP UDP |
网络层 | 网络层 | ip地址选择和路由选择,如路由器 |
链路层 | 链路层 | 介质访问链路管理,如交换机 |
物理层 | -- | 物理传输如网卡,网线 |
三次握手
会被伪造ip通过第一阶段握手进行洪泛攻击,可通过防火墙解决
客户端 | 服务端 | |
---|---|---|
SYN_SEND | SYN=1;seq=J;--请求连接----> | SYN_RCVD |
ESTABLISHED | <----确认应答并建立连接--SYN=1;ACK=1;ack=J+1;seq=K; | -- |
-- | ACK=1;ack=K+1;--针对服务的SYN应答----> | ESTABLISHED |
四次挥手
全双工协议,所以需要相互确认断开连接,进行了4次挥手
客户端 | 服务端 | |
---|---|---|
ESBILISHED | FIN=1;seq=u;--发起断开连接----> | ESBLISHED |
FIN-WAIT1 | <--响应结束请求--ACK=1;seq=v;ack=u+1 | ESBLISHED |
FIN_WAIT2 | <--被动请求断开连接--FIN=1;seq=w;ack=u+1 | CLOSE-WAIT |
TIME-WAIT | ACK=1;ack=w+1;seq=u+1 | CLOSE |
CLOSE |
一次完成的http请求
- 对域名进行DNS解析,获取IP地址
- 根据IP进行三次握手建立TCP连接
- 通过连接发起http请求
- 服务响应http请求,浏览器得到代码
- 浏览器解析、加载代码,展示ui
- 四次挥手断开连接
Socket 编程
Socket套接字
TCP缓冲区
高可靠性,序列号和确认应答提高可靠性
滑动窗口控制发送接收大小
短连接、长连接