TCP/IP协议基础

OSI参考模型

OSI层功能协议/设备数据单位
 应用层提供用户接口,支持网络服务(如文件传输、电子邮件)。HTTP、FTP、SMTP、DNS、Telnet数据(Data)
 表示层数据格式转换(编码/解码)、加密/解密、压缩。SSL、TLS、JPEG、MPEG数据(Data)
 会话层建立、管理、终止应用程序间的会话(会话控制、同步)。NetBIOS、RPC、PPTP数据(Data)
 传输层端到端可靠传输(差错控制、流量控制、分段/重组)。TCP(可靠)、UDP(不可靠)段(Segment)
 网络层逻辑寻址(IP)、路由选择、分组转发(跨网络通信)。IP、ICMP、RIP、OSPF、路由器包(Packet)
 数据链路层物理寻址(MAC)、帧同步、差错检测(CRC)、局域网通信。Ethernet、PPP、交换机、网桥帧(Frame)
物理层传输原始比特流(电信号/光信号)、定义物理介质(电缆、光纤)。RS-232、100BASE-T、集线器、中继器比特(Bit)

 TCP/IP协议栈

层级核心协议
应用层HTTP/HTTPS、FTP、DNS、SMTP、SSH、MQTT、DHCP
传输层TCP、UDP
网络层IP、ICMP、ARP、BGP
数据链路层Ethernet(MAC)、Wi-Fi(802.11)、PPP、VLAN
物理层光纤(1000BASE-T)、Wi-Fi(5GHz)、DSL、RS-232(串口)

 IP协议

特点

IP是无连接的,在传输数据之前不需要建立连接。

IP提供的是尽力而为的服务,超过转发能力时会直接丢弃。

IP数据包在网络中传输是无序的,再转发过程中,不会考虑到达接口的顺序,每个数据包单独进行路由。

IP分组传送是不可靠的,发送端只管发送数据,不关心接收端是否收到数据,IP的可靠性需要上层协议来解决。

IP包头结构

包头长度为: 4位

IP包头长度,单位为 4字节(长度20字节,一般来说,带选项包头长24字节);

报文长度:16位

IP包总长度(包头+数据),单位为字节

标识符:16位

同一IP数据包的各个分片的标识符相同。

标志位(Flags):3位

第1位:没有使用。

第2位:DF位,DF=1不允许对该包进行分片,DF=0允许分片。

第3位:MF位,MF=1表示后面还有分片,MF=0表示最后一个分片。

分段偏移量:13位 

本分片数据载荷在原IP包数据载荷中的相对位置,单位为8字节。

TTL(存活时间):8位,每路由转发一次减1,用于防环。 

协议:8位,标识上层协议。

包头校验和:16位,因IP包头长度可变,用于IP包头完整性校验

MTU与IP分片

MTU(最大传输单元)

链路层MTU:链路层能传的最大的帧,含链路层头部。

网络层MTU:网络层能传的最大的包,含网络层头部。

MTU命令:最大二层净载荷长度(是指除去头部的长度),默认值为1500字节。

路由器的IP分片

数据包大于入接口MTU,Cisco设备将丢弃该包。

数据包大于出接口MTU 

该包的DF=1时,丢弃该包;该的DF=0时,将该包分片。

IP分片只在目标主机上重组。

分片规则

每个分片

最大长度 = MTU - IP头部(通常20字节)(如以太网分片最大1480字节)。

分段偏移量:必须是 8字节的整数倍(因为该字段占13位,单位是8字节)。

最后一个分片的 MF=0,其余分片 MF=1。

举例

原始数据包:4000字节(IP头部20字节,数据3980字节),MTU=1500。

分片1:1480字节(偏移0,MF=1)

分片2:1480字节(偏移185=1480/8,MF=1)

分片3:1020字节(偏移370=2960/8,MF=0)

TCP与UDP

TCP协议概述

TCP是面向连接的,数据传输需要进过建立连接、传输数据、断开连接三个阶段。全双工通信,数据可在连接上的同一时间内双向流动。

TCP提供有序的数据传输,接收端按字节对数据进行确认。

TCP数据传输是可靠的,包头中含有校验和可对数据进行校验,并具有超时重传机制重传丢失的数据。

TCP提供高质量的传输服务,通过滑动窗口机制实现流量控制

TCP适合于可靠性要求高的应用

TCP包头结构

 端口号:16位,0——65536,1024以下为知名端口号。

 窗口:16位,滑动窗口的大小,单位为字节,即能接收的字节数。

 报头长度:4位,TCP包头长度,单位为4字节。

 校验和:16位,TCP报头和数据的校验和。

SEQ:TCP把要在一个连接上发送数据都按字节编号。双方通信编号是独立的,它不一定要从0开始,TCP会在0~(2的32次 方-1)之间的一个随机数作为第一个字节的编号

序号:TCP把要在一个连接上发送的数据分成若干报文段,然后给每个报文段指派一个序号,序号就是该报文段第一个字节的编号。

确认号:期望下一次收到的下一个字节的编号

编码位(TCP Flag) 

FIN: 结束标志;为1时,请求断开连接。

SYN:同步标志;为1时,请求建立连接。

RST:复位标志;为1时,请求重新建立TCP连接。

PSH:通知接收端立即将数据交给用户进程,不要停留在缓存中 ,等待更多的数据。

ACK:确认标志;确认号有效位,表明该数据包包含确认信息。

URG:紧急标志;紧急指针有效位,与16位紧急指针配合使用。

TCP工作机制

TCP建立连接—三次握手

A给B发送一个SYN=1,建立连接的请求,并且发送一个序号SEQ=X数据段,字节号为X;如图为第一次握手SYN位置为1,且SEQ=326373725

B收到A的连接请求之后,发送一个ACK位=1(确认)同时也向A发送一个SYN位=1请求连接,序号编号SEQ=Y的数据段,和ack=X+1表示收到了X+1之前的数据段,并期望收到X+1的数据段;图示位第二次握手,SYN位置为1,ACK位置为1,SEQ=1079517780,ack=326373726,

A收到B的回复之后,给B发送一个ACK位=1的确认,及SEQ=X+1的数据段编号,同时表示收到了ack=Y+1之前的数据段,并期望收到下一个字节编号为Y+1数据段。如图为第三次握手,ACK位置为1,SEQ=326373726,ack=1079517781

这样A于B就完成了连接。

补充:包头长度位20字节,但是第一次和第二次出现32字节是因为出现了一个选项(窗口)

TCP MSS

TCP MSS是TCP的一个重要选项,TCP数据分段的最大长度,该参数在三次握手时发给对方。如图

        网络设备干预TCP MSS协商,可解决大TCP报文不通问题

如果B最大可接收报文长度为1500,而路由器最大可接收报文长度为1200,那么路由器会将TCP MSS修改成1200。

TCP数据传输

为了避免传一个确认一个,低效率的传输,窗口就出现作用了。

当A在向B发送连接时不仅给B 传达了TCP MSS 还传达了A自己最大可接收的报文容量,这样B就可以建立一个于A同大的发送窗口一次性分多个窗口发送在A最大可接收的报文容量。一次确认同时接收(B在发送向A建立连接时同理)这样就能提高数据传输的性能。

 超时重传

当一个数据丢失时,会导致丢使以后的数据缓存在接收窗口里面无法接收成功,这时只能确认接收到数据丢失的报文段前一个报文,发送端收到确认后发现没有接收完全,就会重传丢失的报文数据段,最后接收段重新给发送端发送一个确认全部接收。

TCP连接断开—四次断开机制

A在发完所有数据后,给B发送一个FIN=1断开连接请求,和一个SEQ=P;如图位第一次挥手,FIN位置为1,SEQ=1079522643

B收到A的断开连接请求后 发送确认ACK为=1,和一个ack=P+1,如图位第二次挥手,ACK位=1,ack=1079522644

(确认自己B数据给A也发送完成之后)也请发送一个FIN位=1的断开连接的请求,SEQ=Q;如图为第三次挥手,FIN为置为1,SEQ=326374454

A收到回复之后,给B再发送一个ACK位=1确认,和ack =Q+1。如图为第四次挥手ACK位置为1,ack=326374455

至此A与B断开连接。

补充:A与B的断开是四次握手还是三次握手取决于B收到A断开连接请求时B有没有把数据发送完全,如果发送完了可以是三次握手,如果没有那就只能是四次握手。

TCP流量控制—滑动窗口机制

TCP为每个方向的数据传送都使用两个窗口(发送窗口和接收窗口),共4个窗口。

TCP通过强制发送方和接收方不断调整窗口大小,来实现流量控制。

出现拥塞,窗口减半;

传输稳定,窗口慢慢变大。

UDP协议概述

UDP是无连接的,数据传输之前不需要建立连接。

UDP是不可靠的,发送端不管接收端是否能收到数据,UDP传输 数据的可靠性需要应用层来解决。

UDP只有校验和机制,只能做简单的差错控制。

UDP没有流量控制机制。

UDP包头小,开销低,传输效率高。(优点)

UDP包头结构

UDP校验和的计算

涉及了三个部分:伪IP头部、UDP头部及数据 

TCP与UDP应用场景 

TCP:

Web浏览(HTTP/HTTPS):网页加载需要完整的内容。

文件传输(FTP、SFTP):文件内容必须准确无误。

电子邮件(SMTP、IMAP):邮件附件或文本不能丢失。

数据库操作:SQL查询需保证数据一致性。

UDP:

实时视频/语音(Zoom、WebRTC):容忍少量丢包,但要求低延迟。

在线游戏:快速响应比数据完整性更重要(如玩家位置更新)。

DNS查询:短小的请求-响应模型,重试成本低。

上层协议标识
上层协议标识

 常见以太网类型号

 常见IP协议号

 常见TCP端口号

常见UDP端口号 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值