一、TCP协议---传输控制协议
1.TCP协议特性
1.工作在传输层
2.面向连接协议
3.全双工协议
4.半关闭 断开
5.错误检查(校验)
6.将数据打包成数据段,排序(给数据排序)
7.确认机制 (对面每发一个包都会告诉对面我收到了)
8.数据恢复,重传
9.流量控制,滑动窗口
2.TCP报文段
1.端口号作用:区别应用程序(区别7层协议)
客户端的端口号:随机的 服务端的端口号:一般固定的
2.传输层:tcp/80 -----tcp/http nginx apache 80
80端口代表7层的协议(http协议)协议要靠程序要实现
开发调用 HTTP协议 开发出应用程序(apache nginx软件)
3.控制位:描述了AB两台电脑目前处于什么状态
SYN=1 请求建立连接
SYN=1 ACK =1 同意和你连接
FIN =1 请求断开
FIN =1 ACK =1 同意和你断开
4.滑动窗口:调节 每次发送的数据包量
服务端和客户端之间 会根据实际情况 自动调节数据包的个数
3.TCP连接---tcp三次握手的过程
1.客户端主动发起请求报文,报文序号是随机产生的X,并且报文中的控制位SYN=1代表请求建立连接
2.当服务端收到请求建立连接的报文会回复一个报文,其中产生随机序号y,生成一个确认号为客户端
请求报文的序号+1(x+1),然后控制位 SYN=1 ACK=1
3.当客户端收到同意建立连接的报文时会回复一个确认报文,会按照对方要求产生序号为X+1,再生成一个确认号值为对方报文的序号+1(y+1),最后控制位的ACK=1代表对方同意连接的请求
ACK = 控制位 ack =确认号
4.有限状态机
客户端会出现:syn-sent estab
服务端:listen syn-rcvd estab
CLOSED 没有任何连接状态
LISTEN 侦听状态,等待来自远方TCP端口的连接请求 (服务开启 http(进程) 80端口在帮进程 看着 有没有人找 http )
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认
4.TCP断开连接的四次挥手
二、UDP协议--用户数据报协议
1.直接上来就传输数据,不管对面能不能收到
2.udp特性
1.工作在传输层
2.提供不可靠的网络访问
3.非面向连接协议 无连接
4.有限的错误检查
5.传输性能高 快
6.无数据恢复特性
3.tcp、udp区别
TCP:面向连接,稳定,慢
UDP:无连接,不稳定,快
三、telent协议---远程连接的协议
1.谁主动发请求是客户端,被动是服务端
2.作用:探测远程服务器端口是否开启 telent ip 端口