传输层的TCP和UDP协议
两者区别
1、TCP是面向链接的协议,而UDP是无连接的协议;
2、TCP协议的传输是可靠的,而UDP协议的传输 “尽力而为”;
3、TCP协议可以实现流控,而UDP不行;
4、TCP可以分段,而UDP不行;
5、TCP消耗资源较大,传输效率低。UDP消耗资源较小,速度快;
TCP和UDP的使用场景
TCP协议更适应于对可靠性要求较高,但是对传输效率和资源占用要求较低的场景。UDP更适应于对传输效率要求可靠较高,可靠性要求较低的场景(即时类通信);
![](https://i-blog.csdnimg.cn/blog_migrate/c79114e98f26475f13ed5bbe56e287c4.png)
区别一
什么是面向连接?
在正式传输之前,先使用预先的协议,建立点到点的链接。
TCP建立的连接实际建立了一个双向的会话连接,即通讯双方都可以向对方发送数据。
什么是无连接?
相当于没有建立连接,直接传输数据。
封装和解封装
![](https://i-blog.csdnimg.cn/blog_migrate/f8e45b479f83ef109433c0c8859245bd.png)
TCP的头部
![](https://i-blog.csdnimg.cn/blog_migrate/fc257113c20e15a92cc7a1b160d19c67.png)
序号:是数据包的序号,是随机生成的。
确认序号:是对方收到,并且请求下个包。
首部长度:TCP的头部除了数据部分的长度
每一串字母代表一位二进制,6个标记为,只有两种状态,激活和没激活(即1和0)
URG:表示紧急指针(urgent pointer)是否有效。激活说明紧急指针激活。
ACK:表示确认号是否有效。激活说明确认序号激活,代表本数据是一个确认包。我们称携带ACK标识的TCP报文段为确认报文段。
PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会一直停留在TCP接收缓冲区中)。
RST:表示要求对方重新建立连接。我们称携带RST标志的TCP报文段为复位报文段。
SYN:表示请求建立一个连接。我们称携带SYN标志的TCP报文段为同步报文段。
FIN:表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段。
校验和:(使用反码相加法)由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分(伪头部校验)。这也是TCP可靠传输的一个重要保障。
紧急指针:激活状态下,把数据放在最前面优先处理数据。是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。
TCP头部长度最短20字节
UDP的头部
![](https://i-blog.csdnimg.cn/blog_migrate/fa347a361c721224c1b8967b05634eb4.png)
UDP长度:头部 + 数据的长度。
UDP校验和:确保数据完整性。
UDP头部长度最短8字节
TCP的三次握手
第一次
第一次握手:建立连接时,客户端发送syn包(seq=x,x为随机值)到服务器,等待服务器确认。
第二次
第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y,y为随机值),即SYN+ACK包。(x与y不一样,两个不同的随机值)
第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入TCP连接成功状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
![](https://i-blog.csdnimg.cn/blog_migrate/f294f8c764b385b88a49006cfb52a3f0.png)
TCP的四次挥手
对于一个已经建立的连接,TCP使用改进的四次挥手来释放连接(使用一个带有FIN附加标记的报文段)。
第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段。
第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。
第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放。
为什么是四次而不是三次:主机A自己数据发完了,要求断开。但此时主机B不一定发完数据,所以ACK和FIN不一起发送。主机B要等到自己数据发完了才能去要求断开FIN。开始的三次握手是应为没有传输数据,跟数据无关。
为什么主机A断开还可以对主机B发送ACK:断开了只是说明没有数据传输了,并不代表主机A与主机B不能发生ACK,ACK是功能性的回复。
![](https://i-blog.csdnimg.cn/blog_migrate/f03e59e0fa2a6068c4f30c923eb635fc.png)
区别二
TCP协议的传输是可靠的,而UDP协议的传输 “尽力而为”;
可靠性:确认机制、重传机制(没有收到对方的确定,一直传输这个数据)、排序机制(保证数据按顺序传输)、流控机制
区别三
TCP协议可以实现流控,而UDP不行;
发送端可以一次发送多个数据包,接收端可以只发送一个ACK。
区别四
TCP可以分段,而UDP不行;
TCP数据有序号,可以分开发送。然后把数据拼起来。
区别五
TCP消耗资源较大,传输效率低。UDP消耗资源较小,速度快;
IP协议
![](https://i-blog.csdnimg.cn/blog_migrate/151caa781d060a3f204264e21af979f8.png)
首部长度:IP头部除了数据部分的长度
总长度:头部 + 数据长度
用于将分片的数据组合在一起。
16位标识:分片的数据这个是完全相同的,用于区分分片的同一个数据
3位标识:
第一位是保留位,没有用。
第二位表明是否分片。
第三位可以判断这个是不是最后一片。
13位片偏移:意思是这百个数据包是从源数据包哪个位置开始的。
所以问1300个字节的数据会被分成以下三个包:
A数据包:包含40个字节的IP报文头,答0-460字节的数据,偏移版量为0;
B数据包:包含40个字节的IP报文头,460-920字节的数据,偏移量为权460;
C数据包:包含40个字节的IP报文头,920-1300字节的数据,偏移量为920。
生存时间(TTL):数据包每经过一个路由器的转发,其数值减1,当一个数据包的TTL值为0是,路由器将不再转发而直接丢弃
8为协议:上层所适用的协议类型 --- TCP --- 6,UDP --- 17
16位首部校验和:只校验首部。
IP的分片和TCP的分段
将大的数据包拆成小的发送。
如果传输层用的TCP协议,它直接一步到位,数据到网络层不用再分了。
MTU(最大传输单元):默认值1500字节 MSS (最大段长度):理论值1460字节,这个值需要进行协商,这个参数在TCP的SYN包携带,如果双方不一致,则将按照小的执行。
eNSP软件的使用
GE --- 代表接口支持千兆的转发速率Ethernet --- 代表接口支持百兆的转发速率VRP --- 通用路由平台
![](https://i-blog.csdnimg.cn/blog_migrate/2d8551cceabe967c55fdf9462224e83c.png)
<Huawei> --- 用户视图 ---- < > ---- 只能作查看类型的操作,不能配置
<Huawei>display ip interface brief --- 查看接口IP地址的摘要信息
<Huawei>system-view --- 进入系统视图的命令Enter system view, return user view with Ctrl+Z.
[Huawei] ---- 系统视图的标志 --- [ ] --- 可以进行配置,但是只能进行一些全局类的配置[Huawei]sysname aa --- 改名字[aa]
[aa]interface GigabitEthernet 0/0/0 --- 进入接口视图[aa-GigabitEthernet0/0/0]
[aa-GigabitEthernet0/0/0]ip address 192.168.1.1 24 --- 接口配置IP地址
[aa-GigabitEthernet0/0/0]quit --- 退回到上一个视图中[aa]
[aa-GigabitEthernet0/0/1]undo ip address 192.168.2.1 255.255.255.0 --- 华为设备所有的删除操作都是在原命令前面加undo
帮助系统
TAB --- 可以补全命令? --- 可以展示以定义字母开头的所有命令。或者在命令完成后执行,可以将后面跟的参数进行展示