TCP/IP
2021-07-15 本文已影响0人
taobao
TCP/IP协议族
TCP/IP协议族包含:TCP、UDP、IP、FTP、HTTP、SMTP、ICMP
OSI七层模型:
应用层:FTP、HTTP、DNS、Telnet、SMTP、
表示层:无相关协议
会化层:无相关协议
传输层:TCP、UDP
网络层:IP、ICMP、RIP、OSPF、GBP、IGMP
数据链路层:SLIP、CSLIP、PPP、ARP、RARP、MTU
物理层:ISO2110、IEEE802、IEEE802.2
UDP
- 面向无连接,没有TCP协议的三次握手,不会对数据报文进行拆分和拼接
- 有单播、多播、广播的功能;一对一,一对多,多对多
- UDP是面向报文的
- 不可靠性
- 头部开销小,传输数据报文时是很高效的
TCP
TCP是面向连接的、可靠的,基于字节流的传输层通信协议,
- TCP连接过程(三次握手)
第一次握手,客户端向服务端发送连接请求,改报文段中包含自身的数据通讯初始 序号,请求发送后,客户端便进入SYN-SENT状态
第二次握手,服务端收到客户端的连接请求后,如果同意连接,则会发送一个应答,该应道中会包含吱声的数据通讯初始序号,发送完后,服务端进入SYN-RECEIVED状态。
第三次握手,当客户端收到服务端同意连接的应答后,还会向服务端发送一个报文,发送完后,客服端进入 ESTABLISHED状态,服务端收到这个应答后也进入ESTABLISHD状态,此时连接建立成功 - TCP断开链接(四次挥手)
第一次挥手,客户端A发送完数据后,想服务端B发送链接释放请求
第二次挥手,服务端B收到释放链接请求后,会告诉应用层释放TCP链接,然后会发送ACK包,并进入CLOSE_WAIT状态,此时表明A到B的链接已经释放,不再接受A发的数据了,但是因为TCP链接是双向的,所以B仍旧可以向A发送数据
第三次挥手,B此时如果数据没有发送完,可以继续发送,发送完后,会向A发送释放链接的请求,然后B进入LAST-ACK状态
第四次挥手,A收到B发送的释放请求后,想B发送确认应道,此时A进入TIME-WAIT状态,该状态会持续2MSL(最大段生存期)时间,若该时间没有B的重发请求后,就进入CLOSED状态,当B收到确认应答后,也进入CLOSED状态。
TCP协议特点
- 面向链接
- 仅支持单向传输
每条TCP传输连接,只能有两个端,点对点进行数据传输 - 面向字节流
TCP不像UDP那样一个个报独立传输,而是在不保留报文边界的情况下以字节流方式传输 - 可靠传输
- 提供拥塞控制
- TCP提供全双工通信
位码
位码即TCP标志位,共6种标识:
- SYN(synchronous) 建立连接
- ACK(acknowledgement)确认
- PSH(push)传送
- FIN(finish)结束
- RST(reset)重置
- URG(urgent)紧急
- Seq-num(sequence number)顺序号码
- Ack-num(acknowledge number)确认号码
状态
- 客户端独有:
1:SYN_SENT 在发送连接请求后等待匹配
2:FIN_WAIT1 等待远程TCP连接中断请求 或 先前连接中断请求后的确认
3:FIN_WAIT2 从远程TCP等待连接中断
4:CLOSING 等待远程TCP对连接中断的确认
5:TIME_WAIT 等待足够时间确保远程TCP接收到连接中断请求的确认 - 服务端独有:
1:LISTEN 侦听来自远方TCP端口的连接请求
2:SYN_RCVD 在收到和发送一个连接请求后等待对方连接确认
3:CLOSE_WAIT 等待连接中断的请求
4:LAST_ACK 等待原来发向远程TCP的连接中断请求的确认 - 共有:
1:CLOSED 没有任何连接状态
2:ESTABLISHED 代表一个打开的的连接,可以发送数据