TCP与UDP基本原理
TCP是面向连接的可靠的传输层协议
UDP是无连接的传输协议
传输层作用:
提供面向连接或无连接的服务
维护连接状态
对应用层数据进行分段和封装
实习多路复用
可靠的传输数据
执行流量控制
TCP基本原理:
面向连接的
三次握手(建立可靠连接)
确认机制(应答接收)
端口号(多路复用)
序列号(丢失检测、乱序重排)
完整性校验(差错检测)
窗口机制(流量控制)
TCP封装:
ip头,tcp头,载荷数据
TCP头格式:
32位,24个字节
源端口号,目的端口号
序列号(tcp的数据字节)(32位)
确认序列号(=序列号+1)
数据偏移,保留的,urg(紧急指针),ack(确认),psh(延迟推)、rst(复位、重置),syn(正在建立连接),fin(正在断开连接)、窗口(告诉主机每次能够接受的数据量的大小)(流量控制)
校验和(校验数据),
选项(哪些数据字段是有效的)、数据、填充(一个引入额外的‘0’,保持tcp头为32位的整数)
TCP转发时,MSS值(数据最大承载量)
数据链路层,MTU值( 最大传输单元 )
tcp/udp端口号:
每个ip地址可以提供16个源端口号,16个目的端口号。每个ip地址能提供2的16次方个端口号。
知名端口号:<1023
TCP
telnet:23
ftp:20/21
http:80
smtp:25
UFP
dns:53
tftp:69
snmp:161/162
bootp:67/68
tcp连接的建立:
三次握手(主机a首先发送SYN请求序列号为a,第一次不需确认;主机b回馈序列号为b,ack=a+1;主机a发送序列号a+1,ack=b+1)
断开连接(主机a FIN(seq=p);主机b ack=p+1 还有FIN(seq=q);主机a ack=q+ 1)
传输确认(根据主机b的接收能力协商传输数据确认,主机b每四个之后发送ack=4097)
超时重传(主机b发送ack=1025,主机a等RTT(等待往返时间)后重新发送)
滑动窗口(交换窗口来确认最大接受数据量的大小)(由于太大,主机b发送ack=4097,win=2048,之后主机a每次只发送2048字节)
utp基本原理:
源端口号,目的端口号
长度,校验和
数据
udp缺乏可靠性的保障机制,占用资源少,节约缓存,延迟小
tcp有可靠保障机制,占用内存多,需要等待对方确认