Linux基础11(TCP&UDP&IP协议详解)

第十一章、TCP&UDP&IP协议详解

1.TCP协议详解

面向连接、可靠的、字节流服务

1.面向连接

在服务器与客户端通信,之前必须通过三次握手建立连接,之后必须通过四次挥手断开连接

1.1. 三次握手过程

在这里插入图片描述
Q:为什么要三次握手,两次行不行,四次有必要吗?
在这里插入图片描述在这里插入图片描述还有SYN溢出攻击:客户端不断发信息,然后关闭客户端,就会把服务器端的资源耗尽。

四次握手没有必要,四次握手就是将ACK和SYN分开传输,没有必要。

1.2. 四次挥手过程+状态转换图(TIME_WAIT、CLOSE_WAIT)

在这里插入图片描述Q1:为什么要四次挥手?
A:因为socket通信是全双工的
在这里插入图片描述
Q2:必考题:为什么主动断开方没有直接进入到CLOSED,而是有一个TIME_WAIT状态?
A:1.保证迟来的数据能够被识别并丢弃。
2.保证可靠的终止TCP连接–保证最后一个ACK能够传输到被动断开方。
测试过程:先结束服务器端,然后再次启动服务器端,发现启动失败
在这里插入图片描述大概两分钟后,time_wait状态结束,可以重新启动:
在这里插入图片描述

1.3.网络命令 (ifconfig、netstat、ip、ss)

在这里插入图片描述

1.4. 同时断开连接

在这里插入图片描述

1.5. 状态转移图

详见:linux高性能服务器编程
在这里插入图片描述

2.可靠性传输

在这里插入图片描述

1. TCP报头结构

在这里插入图片描述

2. 应答确认与超时重传

在这里插入图片描述

3. 32位序号

根据TCP报头中的32位序号,通过排序和去重实现数据的不重复、不乱序!

4. 16位校验码与CRC冗余校验

用TCP报头中的16位校验码进行冗余码算法校验,来保证数据不失真!(对TCP头部和数据部分都会进行校验)

5. 滑动窗口

真正的发送窗口是在滑动窗口和拥塞控制窗口之间取最小值

5.1. 滑动窗口机制

在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.2. 零窗口

零窗口探测报文段
在这里插入图片描述

5.3. 糊涂窗口综合症

在这里插入图片描述

5.4. Nagle算法

在这里插入图片描述

6. 拥塞控制

控制发送方发送数据的速率与当前网络状况的匹配.
1.慢启动(拥塞未发生时使用)
2.拥塞避免(拥塞未发生时使用)
3.快速重传(拥塞发生后使用)
4.快速恢复(拥塞发生后使用)
在这里插入图片描述

3.字节流服务(容易引发数据包粘包问题)

TCP字节流的特点,发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系,应用程序对数据的发送和接收是没有边界限制的。
在这里插入图片描述1.发送方send与接收方recv没有直接的数量关系
2.网络中传输与接收方的数据都不会因为send的次数而被分隔开—数据是一个整体,中间是没有分隔的!!

在这里插入图片描述

2.UDP协议详解

1.UDP报头结构

在这里插入图片描述

2.数据报服务

请添加图片描述

3.IP协议详解

网络层的任务:数据报的选路、转发

1.IP协议特点:无连接、不可靠、无状态

2.IP报头结构

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.IP分片

超过MTU的IP数据报可以被分片传输(分开的是IP数据报的数据部分,IP部分要复制给每一个分片)
在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值