五层架构vs七层架构
- 应用层:
- 表示层:对数据进行解释(翻译成人能看懂的),加密,解密,压缩,解压缩等。
- 会话层:通过传输层的端口号建立数据传输的通路。
- 传输层:定义传输数据的协议和端口号。(段)
- 网络层:把数据进行IP地址的封装与解封装。(路由器)(数据包)
- 数据链路层:将数据进行MAC地址的封装与解封装。(交换机)(帧)
- 物理层:(比特)
TCP
数据包架构:
- (源端口号和目的端口号)加上(IP报中的源IP地址和目的IP地址)可以唯一的确定一个TCP连接。
- 序列号seq:表示发送的数据字节流,第一次发一般就是1.
- 确认号ack:表示发送端期望收到服务端给的是,是seq+1,表示服务端确实接收了数据。
- FIN:用于释放连接(想要关闭连接请求),SYN=1表示(想要进行连接请求),另个功能是让序列号同步。
- 选项:最长报文大小MSS
三次握手
- SYN=1,随机的seq。
- ack = seq+1,SYN=1,ACK=1,随机的seq。
- ack= seq+1,ACK=1。
四次挥手
- 原因是TCP是半关闭的。TCP全双工通信(两个方向可以同时发,所以关闭的时候要单独关闭),
- FIN,seq
- ACK=1,ack=seq+1(此时整体处于半关闭状态),seq
- FIN,seq,ACK,ack
- ACK=1,ack=seq+1,seq(此时A处于time-wait状态,B处于关闭状态)
TCP vs UDP
- 面向连接
- 全双工
- 点对点
- 可靠(检验和,超时重传,序列号/确认应答,滑动窗口,流量控制,拥塞控制)
- 字节流
滑动窗口
拥塞控制
流量控制