IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> ?TCP、UDP、HTTP带你玩个明白,适合初学者?? -> 正文阅读

[网络协议]?TCP、UDP、HTTP带你玩个明白,适合初学者??

目录

简介

TCP

TCP的三次握手

TCP的Flags

TCP的主要流程详解

? ? ? ? 流程图

? ? ? ? ?主要流程

为什么需要三次握手才能建立起连接?

首次握手的隐患----SYN超时的原因及防护措施。

? ? ? ? 问题起因分析:

? ? ? ? 针对SYN Flood 的防护措施:

建立连接后,Client出现故障怎么办?

TCP四次挥手

? ? ? ? 流程图

? ? ? ? ?主要流程

为什么会有TIME_WAIT状态?

为什么需要四次握手才能断开连接?

服务器出现大量CLOSE_WAIT状态的原因是什么?

TCP的滑动窗口

? ? ? ? RTT和RTO:

? ? ? ? TCP使用滑动窗口做流量控制与乱序重排:

? ? ? ? 窗口数据的计算过程:??????????????????

UDP

UDP的报文结构

?UDP的特点

TCP和UDP的区别

HTTP

超文本传输协议HTTP主要特点:

HTTP请求结构

请求/响应的步骤

在浏览器地址栏键入URL,按下回车之后经历的流程?

HTTP状态码


简介

本文章是我自己在自学网络方面所记录的笔记,现在分享给大家,有不懂或没学过的以及想学习了解网络这方面的知识的猿友们,可以耐心的看看这篇文章,主要讲解TCP、UDP、HTTP三个协议。

TCP

TCP的三次握手

? ? ? ? 握手是为了建立连接,在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

TCP的Flags

Flag说明
URG紧急指针标志
ACK确认序号标志
PSHpush标志
RST重置连接标志
SYN同步序号,用于建立连接过程
FINfinish标志,用于释放连接

TCP的主要流程详解

? ? ? ? 流程图

????????

?

? ? ? ? ?主要流程

? ? ? ? ? ? ? ? 第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

? ? ? ? ? ? ? ? 第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

? ? ? ? ? ? ? ? 第三次握手:客户端收到武器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHEN(established)状态,完成 三次握手。

为什么需要三次握手才能建立起连接?

? ? ? ? 为了初始化Sequence Number的初始值。

首次握手的隐患----SYN超时的原因及防护措施。

? ? ? ? 问题起因分析:

? ? ? ? ? ? ? ? Server收到Client的SYN。回复SYN-ACK的时候未收到ACK确认,Server不断充实直至超时,Linux默认等待63秒才断开连接。Liunx默认重发次数为5次,重发次数时间翻倍。?

? ? ? ? ? ? ? ? 1s-->2s-->4s-->8s-->16s:31s;第五次还需要等待32s。

? ? ? ? 针对SYN Flood 的防护措施:

? ? ? ? ? ? ? ? SYN队列满后,通过tcp_syncookies参数回发SYN Cookie(原地址端口+目标地址端口+时间戳),Sequence Number简称SYN Cookie。

? ? ? ? ? ? ? ? 若为正常连接则Client会回发SYN Cookie,直接建立连接。

建立连接后,Client出现故障怎么办?

? ? ? ? 保活机制:向对方发送保活探测报文,如果未收到相应则继续发送尝试次数达到保活探测数仍未收到响应则中断连接。

TCP四次挥手

? ? ? ? 挥手是为了终止连接。

? ? ? ? 流程图

????????

? ? ? ? ?主要流程

? ? ? ? ? ? ? ? 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态;

? ? ? ? ? ? ? ? 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为 收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态;

? ? ? ? ? ? ? ? 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态;

? ? ? ? ? ? ? ? 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

为什么会有TIME_WAIT状态?

? ? ? ? 原因:

? ? ? ? ? ? ? ? 确保有足够的时间让对方收到ACK包;

? ? ? ? ? ? ? ? 避免新旧连接混淆。

为什么需要四次握手才能断开连接?

? ? ? ? 因为全双工,发送方和接受方都需要FIN报文和ACK报文

服务器出现大量CLOSE_WAIT状态的原因是什么?

? ? ? ? 对方关闭socket连接,我方忙于读或写,没有及时关闭连接。

? ? ? ? 检查代码,特别是释放资源的代码

? ? ? ? 检查配置,特别是处理请求的线程配置

TCP的滑动窗口

? ? ? ? RTT和RTO:

? ? ? ? ? ? ? ? RTT:发送一个数据包到收到对应的ACK,所花费的时间

? ? ? ? ? ? ? ? RTO:重传时间间隔,通过RTT计算出来的

? ? ? ? TCP使用滑动窗口做流量控制与乱序重排:

? ? ? ? ? ? ? ? 保证TCP的可靠性

? ? ? ? ? ? ? ? 保证TCP的流控特性

? ? ? ? 窗口数据的计算过程:
?????????????????

?????????????????AdvertisedWindow = MaxRcvBuffer - (LastByteRcvd - LastByteRead)

????????????????EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked)

UDP

UDP的报文结构

????????

?UDP的特点

? ? ? ? 1.面向非连接

? ? ? ? 2.不维护连接状态,支持同时向多个客户端传输相同的消息

? ? ? ? 3.数据包报头只有8个字节,额外开销较小

? ? ? ? 4.吞吐量只受限于数据生成速率、传输速率以及机器性能

? ? ? ? 5.尽最大努力交付,不保证可靠交付,不需要维持复杂的连接状态表

? ? ? ? 6.面向报文,不对应用程序提交的报文信息进行拆分或者合并

TCP和UDP的区别

????????面向连接VS无连接

????????可靠性VS不可靠

????????有序性VS不具备有序性

????????速度比较慢(创建连接,保证消息的可靠性、有序性)VS速度快

????????重量级(元数据的头部大小20个字节)VS轻量级(8个字节)

HTTP

超文本传输协议HTTP主要特点:

????????支持客户/服务器模式

????????简单快速

????????灵活

????????无连接(限制每次连接只出一个请求)

????????无状态(对于事务处理能力没有记忆)

HTTP请求结构

????????

请求/响应的步骤

????????1.客户端连接到WEB服务器

????????2.发送HTTP请求

????????3.服务器接受请求并返回HTTP响应

????????4.释放连接TCP连接

????????5.客户端浏览器解析HTML内容

在浏览器地址栏键入URL,按下回车之后经历的流程?

????????会基于URL逐层查询DNS服务器缓存,解析URL中的域名所对应的IP地址,DNS缓存从近到远:浏览器缓存-->系统缓存-->路由器缓存-->IPS服务器缓存、域名服务器缓存,从哪个缓存中查询出后直接返回。

????????1.DNS解析

????????2.TCP连接

????????3.发送HTTP请求

????????4.服务器处理请求并返回HTTP报文

????????5.浏览器解析渲染页面

????????6.连接结束

HTTP状态码

????????1xx:指示信息--表示请求已接收,继续处理

????????2xx:成功--表示请求已被成功接收、理解、接受

????????3xx:重定向--要完成请求必须进行更进一步的操作

????????4xx:客户端错误--请求有语法错误或请求无法实现

????????5xx:服务器端错误--服务器未能实现合法的请求

不足之处,可以关注私信沟通,期待技术交流!

作者:筱白爱学习!!

欢迎关注转发评论点赞沟通,您的支持是筱白的动力!

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 17:02:36  更:2021-08-23 17:03:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:17:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码