day36

  1. 粘包现象描述

TCP发送多包数据时,由于TCP是流式传输协议,多包数据可能在接收端粘连在一起,无法区分包边界。

  1. 粘包解决方法

· 加延时:在每包数据发送后加入适当延时,等待接收端处理完毕再发送下一包

· 设置数据边界:在数据包中添加特殊分隔符作为包与包之间的边界标识

· 定长发送:规定每个数据包固定长度,不足时补位,接收端按固定长度截取

第二部分:TCP报文头部结构

  1. TCP固定头部(20字节)组成

· 16位源端口号:发送端应用程序的端口号

· 16位目的端口号:接收端应用程序的端口号

· 32位序号:标识该数据包数据起始字节的编号

· 32位确认序号:接收方期望下次收到的数据首字节序号

· 4位首部长度:标识TCP头部的长度

· 6位保留字段:预留未使用

· 6个控制标志位

· 16位校验和:校验数据完整性

· 16位紧急指针:配合URG标志使用

  1. 控制标志位含义

· SYN:请求建立连接,用于三次握手

· ACK:确认应答标志,置1时确认序号字段有效

· FIN:结束通信标志,用于四次挥手

· RST:重置连接标志,用于异常时重新建立连接

· PSH:推送标志,指示接收端尽快将数据交给应用层

· URG:紧急标志,指示紧急指针有效

第三部分:TCP三次握手与四次挥手

  1. 三次握手建立连接

· 主动端发送SYN请求,进入同步已发送状态

· 被动端收到后回复ACK并发送自己的SYN,进入同步已接收状态

· 主动端收到后回复ACK,双方进入连接已建立状态

  1. 四次挥手断开连接

· 主动关闭端发送FIN请求,进入FIN等待1状态

· 被动关闭端回复ACK确认,进入关闭等待状态,主动端进入FIN等待2状态

· 被动关闭端数据发送完毕后发送FIN请求,进入最后确认状态

· 主动关闭端回复ACK确认,进入时间等待状态,定时结束后连接彻底关闭

  1. 特殊情况说明

· 若被动关闭端在收到FIN时已无数据待发送,可同时回复ACK+FIN,四次挥手可能变为三次

· TCP连接保持期间默认维持连接状态,直到挥手结束

第四部分:TCP可靠传输机制

  1. 序号与确认号机制

· 序号标识本包数据的起始字节编号,保证数据顺序

· 确认号指示期望下次收到的数据首字节序号

· 通过序号和确认号配合,确保数据不重不漏

  1. 滑动窗口机制

· 用于控制传输流量和发送速率

· 通过窗口大小字段动态调整发送端和接收端的缓冲区大小

· 实现流量控制,防止接收端处理不过来导致丢包

  1. 拥塞控制机制

· 当网络拥堵、带宽占用较大时自动触发

· 控制发送速率,避免网络过载导致数据丢失

· 保证数据在恶劣网络条件下的可靠通信

  1. 掉线检测机制

· TCP在连接建立后至断开前持续检测连接状态

· 及时发现对端是否已掉线或不可达

第五部分:TCP与UDP对比总结

UDP特点

· 实现机制简单,头部开销小

· 资源占用少

· 不安全不可靠,无重传和确认机制

· 无连接,无需预先建立通信链路

· 适合实时通信、广播、音视频流等容忍丢包的场景

TCP特点

· 实现机制复杂,头部开销大

· 资源占用多

· 安全可靠,具备确认重传机制

· 面向连接,需三次握手建立连接

· 适合文件传输、Web访问、邮件等对数据完整性要求高的场景

第六部分:HTTP协议概述

  1. HTTP定义

超文本传输协议,是基于TCP的一种应用层协议,用于规定超文本(网页)在网络中传输的流程和格式。

  1. C/S模型(客户端/服务器)

· 资源存储在本地客户端

· 加载速度快,无需联网即可工作

· 缺点:占用本地存储空间,不同平台需单独开发客户端,资源更新需升级版本或打补丁

  1. B/S模型(浏览器/服务器)

· 资源存储在服务器端

· 新增资源无需更新本地内容

· 每次查看从服务器下载最新资源

· 各平台均有浏览器,代码通用,无需重复开发客户端

第七部分:URL统一资源定位符

URL格式组成

· 协议:指定获取资源的协议(http或https)

· 主机:服务器IP地址,通常以域名形式呈现,通过DNS解析为IP地址

· 端口:服务器应用程序端口号(HTTP默认80或8080,HTTPS默认443)

· 路径:资源在服务器中的存放位置

第八部分:HTTP传输过程

· 用户在浏览器中输入URL

· 浏览器向URL对应IP和端口发起TCP连接

· 建立连接后发送HTTP请求报文

· 服务器回复HTTP响应报文

· 响应完毕后断开TCP连接

第九部分:HTTP请求报文格式

  1. 请求行

· 方法:GET(获取资源)或POST/PUT(提交资源)

· URL:请求资源的路径

· 版本:HTTP/1.1

  1. 首部行

· 格式为"首部字段名: 值"

· 根据场景使用不同首部字段(如Host、User-Agent、Content-Type等)

  1. 实体主体

· 通常不使用,POST等方法提交数据时携带

第十部分:HTTP响应报文格式

  1. 状态行

· 版本号:HTTP/1.1

· 状态码:响应该次请求的结果

· 短语:对状态码的简短文字说明

  1. 状态码分类

· 1xx:通知信息类,请求已收到或正在处理

· 2xx:成功类,请求被接受并处理完成

· 3xx:重定向类,需进一步操作完成请求

· 4xx:客户端错误类,请求语法错误或无法完成

· 5xx:服务器错误类,服务器处理请求时失效

  1. 首部行与实体主体

· 首部行包含响应头信息(如Content-Type、Content-Length、Set-Cookie等)

· 实体主体包含实际请求的资源内容(HTML、JSON、图片等)

相关推荐
HRTOS1 小时前
HRTOS应用示例:Mutex互斥锁机制详解
c语言·单片机·嵌入式硬件·51单片机
吴声子夜歌1 小时前
Linux命令——查找文件
linux·运维·学习
mounter6251 小时前
Linux 内核 binfmt_misc 深度全景解析:历史、架构、安全
linux·安全·linux kernel·kernel
铅笔小新z1 小时前
【stm32】I2C 阻塞通信实战与 HAL 源码
stm32·单片机·嵌入式硬件
吴声子夜歌2 小时前
Linux命令——归档与备份
linux·运维·备份·归档
fangjianj2 小时前
Dell PowerEdge R930 物理服务器重装 Ubuntu Server 22.04 全流程实战记录
linux·服务器
fpcc2 小时前
计算机原理—程序的具体执行流程
linux
HackTwoHub2 小时前
BurpSuite2026.8专业(稳定版)下载Windows/Linux/Mac支持Java21以上(新增Burp AT智能体)
linux·运维·服务器·安全·macos·网络安全·自动化
晴天162 小时前
systemd 核心原理与实战-Day39
linux