TCP/IP协议栈
TCP/IP特性
- 工作在传输层
- 面向连接协议
- 全双工协议
- 半关闭
- 错误检查
- 将数据打包成段,排序
- 确认机制
- 数据恢复,重传
-
流量控制,滑动窗口
tcp要先建立连接,然后发送数据
端口号作用 :确认进程
端口号
三类
1.1.规定好的 知名难过的端口号 80 443 人为规定
2.系统随机分配(客户端去访问服务端 系统会自动随机分配一个端口号给你)
3.人类自由使用(大神新创造一个程序,规定一个端口号)
去访问服务器
下载文件(ftp,tftp,nfs) , 访问网页(apche nginx tomcat ISIS)
安装软件
提供服务
TCP协议
- TCP是面向连接的,可靠的进程到进程通信的协议
- TCP提供全双工服务,即数据可在同一时间双向传输
- TCP报文段
TCP将若干个字字节构成一个分组,叫报文段(Segment)
TCP报文封装在IP数据包中
源端口、目标端口:
计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即 65536 (0-65535)
序列号:发送数据时候给每个数据段分上一个编号,这个编号可以无限使用的,用完了再从0开始无限循环。
确认号(ask):
A 1 B 1+1
A确认号0 B 确认号0+1
B 回给A 确认号 0+1 就代表没问题
数据偏移/首部长度:TCP报文的首部长度
控制位:
决定 A 和 B 目前处于什么状态 11种了解
ACK FIN SYN
tcp A 和 B 目前处于什么状态
A和 B 请求建立连接状态 syn=1 同步位
A 和 B 已经建立连接状态 ACK=1
A 和 B 已经断开连接状态 fin=1
ACK 已建立连接
URG(紧急位):包含紧急数据,如果紧急位为1,代表紧急优先发送。
PST(重置位):当A和B通信有问题需要重新连接一下
PSH(急切位):数据到急切位时可以不交给应用程序
SYN(同步位):建立连接时使用,来同步序号的。 当SYN=1, ACK=1时表示连接,SYN=1 ,说明这是请求建立连接或同意建立连接的报文。(请求建立连接)
FIN(断开位):表示终端关闭连接,如果FIN=1,就是告诉对方可以断开连接了(断开连接)
窗口大小:表示本报文段的确认号开始允许对方发送的数据量。
校验和:提供额外的可靠性紧急指针:标志紧急数据在数据字段的位置
*选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)4-20=40字节
TCP建立连接的过程被称为三次握手
三次握手
1.PC1发送SYN报文(Seq=x,SYN=1)(Seq=x是PC1的序号位是x,第一个序号位一般是随机的,SYN=1请求连接)
2.PC2发送SYN+ACK报文(Seq=y,Ack=x+1,SYN=1,ACK=1)(Seq=y是PC2的序列号,Ack=x+1是请求PC1发送x+1的编号,SYN=1,ACK=1是请求建立连接,PC2同意连接)
3.发送ACK报文(Seq=x+1,ACK=y+1,ACK=1)(1.会发送一个x+1的报文2.希望PC2下次发送y+1序号报文,ACK=1,建立连接关系)
TCP断开连接的四次挥手
有限状态机
-
CLOSED 没有任何连接状态
-
LISTEN 侦听状态,等待来自远方TCP端口的连接请求
-
SYN-SENT 在发送连接请求后,等待对方确认
-
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
-
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
-
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
-
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
-
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
-
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
-
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
-
CLOSING 双方同时尝试关闭传输连接,等待对方确认
客户端先发送一个FIN给服务端,自己进入FIN_WAIT_1
状态,这时等待接收服务端报文,该报文会有三种可
能:
- 只有服务端的ACK
- 只有服务端的FIN
- 基于服务端的ACK,又有FIN
UDP 特性 工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
udp和tcp的区别
TCP:可靠, 接不到可以重新传输 速度慢 面向连接 面向字节传输
UDP:不可靠, 接不到不会重新传输 速度快 无连接 面向报文传输
总结
这节课我们学习了TCP/IP的特性,tcp协议,三次握手和四次挥手以及有限机状态