网络
可靠安全 -> 7层架构
数据链路层
解决两个节点传输,最小传输单位,数据包,可以通过基础验证检查这个包是否安全和正确
网络层
为了解决数据在网络上的传递,加上了路由的概念,通过路由传到指定的地址。为了标记在网络层上的地址,加上了IP协议
传输层
为了保证传输的数据包可靠,增加了出错重传机制 TCP基于链接/UDP
应用层
为了解决这个数据是为哪个应用服务的,SMTP/HTTP。。。
网络传输的问题
不可靠: 丢包,重复包,出错,乱序
不安全: 中间人攻击,窃取,篡改
TCP怎么解决网络不可靠问题
滑动窗口协议,TCP协议中使用,通过维持发送方/接收方缓冲区解决。如果没有滑动窗口协议会一个一个传递导致吞吐量问题。滑动窗口协议,有超时重传机制和按顺序发ACK。图片
Wireshark教程
有关TCP协议及滑动窗口常见的问题
TCP协议要达到的目的?基于链接的一个协议,基于TCP协议达到一个可靠的传输。可靠传输是只,包是按序收到,不出错,流量控制(滑动窗口),拥塞控制
滑动窗口是怎么运行的?解决了什么问题?
解决吞吐量问题,流量控制,保证收发顺序一致
TCP协议如何做到流量控制?如何做到拥塞控制?
TCP协议建立连接三次握手,断开连接四次挥手
建立三次握手
1. CLIENT(SYS_SENT) -> SYN -> SERVER (LISTEN)
2. CLIENT(ESTABLSIHED) <- SYN,ACK <- SERVER(SYS_RECEIVED)
3. CLIENT(ESTABLSIHED) -> ACK -> SERVER(ESTABLSIHED)
C -> 数据 -> S
四次挥手
1. SENDER (FIN_WAIT_1) -> FIN -> RECEIVER(ESTABISHED)
2. SENDER(FIN_WAIT_2) <- ACK <- RECEIVER(CLOSE_WAIT)
3. SENDER(TIME_WAIT) <- FIN<- RECEIVER(LAST_ACK)
4. SENDER(TIME_WAIT) -> ACK -> RECEIVER(CLOSED)
断开连接为什么要四次挥手?
因为接收方可能不能立马进行断开,所以先发一个ACK确认收到FIN请求。只有在准备好以后接收方才会发送一个FIN请求给接收方