传输协议
1、传输层
TCP传输控制协议:面向连接,效率低,安全可靠
提供全双工服务,数据可在同一时间内双向传输
UDP用户数据报协议:无连接、不可靠的传输协议,安全性低,花费的开销小.
2、TCP报文段封装在IP数据报中
TCP报文段:
源端口号(16) 目标端口号(16)
序号(32)
确认号(32)
首部长度(4)保留(6) URG、ACK、PSH、RST、SYN、FIN 窗口大小(16)
校验和(16) 紧急指针(16)
选项
3、
序号:发送端为字母进行编号,便于接收方正确重组
确认号:确认发送端的信息
窗口大小:说明本地可接收数据段的数目
4、六个指针
SYN:同步指针,在建立连接时用来同步序号,当SYN=1,ACK=0时连接为请求报文;当SYN=1,ACK=1时,连接为响应报文
ACK:确认指针,当ACK=1时,确认号字段有效,建立连接后ACK=1
FIN:终止指针,用来释放连接
URG:紧急指针,当URG=1时表明紧急指针字段有效,告诉系统报文段中有紧急数据
PSH:推送指针,当两个应用进程进行相互式通信时,有时候在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时將PSH=1即可
RST:复位指针,当RST=1时表示TCP连接中出现严重差错,必须释放连接,然后再重新建立一次连接
5、三次握手(在传输数据之前建立)
在刚开始的时候客户端与服务器处于关闭状态,此时服务器打开TCB传输控制块处于侦听状态
第一次握手: 客户端向服务器发送SYN请求报文,同步指针SYN=1,序列号seq=x,期待确认序号x+1,此时客户端进入同步已发送状态(SYN-SENT)
第二次握手: 服务器接收来自客户端的请求,确认收到请求ACK=1,确认客户端的序号为x+1。此时服务器进入同步已收到状态(SYN-SCVID)
此时服务器向客户端发送请求,同步指针SYN=1,序列号seq=y。
第三次握手: 客户端接收来自服务器的请求,确认收到请求ACK=1,确认服务器的序列号为y+1,收到服务器确认收到请求的序列号seq=x+1
一句话概括就是:客户端, 问:我能和你链接吗?
服务器,答:可以,那我可以和你连接吗?
客服端,回应:完全可以。
6、四次挥手(释放连接,停止发送信息)
客户端与服务器处于连接状态
第一次挥手: 客户端向服务器发送请求终止命令FIN=1,序列号seq=u,期待序列号为u+1。此时客户端进入终止等待一状态(FIN-WAIT-1)
第二次挥手:服务器接收来自客户端的终止请求,确认收到来自客户端的请求ACK=1,确认客户端的序列号为u+1。此时服务器进入关闭等待状态(CLOSE-WAIT)
服务器向客户端做出回应。此时客户端处于终止等待二状态(FIN-WAIT-2)
第三次挥手:当服务器将客户端的请求全部回应完后才开始请求关闭。服务器向客户端发送请求终止命令FIN=1,序列号seq=w,期待序列号为w+1,此时服务器最后等待客户端的接收(LAST-ACK)
客户端接收来自服务器的请求,确认接收ACK=1,确认序列号为w+1。此时客户端处在时间等待状态(TIME-WAIT)
第四次挥手:客户端向服务器做出回应,服务器接收到回应后关闭
服务器关闭后客户端需等待两个最长报文段寿命的时间(2*MSL)30s~150s:防止服务器接收不到来自客户端的回应,,以便于服务器重新发送关闭请求
一句话概括:客服端:我想和你断开。
服务器:可以。
服务器:我也想和你断开。
客服端:好的(顺带看着你远去)
7、
FTP(21):FTP服务器所开放控制端口
TELNET(23):远程登录
SMTP(25):发送邮件
HTTP(80):超文本传输协议
POP3(110):邮件的接收
8、
UDP:无连接、不可靠的传输协议,花费开销小(QQ、微信的语音)
9、UDP报文首部格式
源端口号(16) 目标源端口号(16)
UDP长度(16) UDP校验和(16)
10、
TFTP(69):简单文件传输协议
RPC(111):远程过程调用
NTP (123):网络时间协议