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连接与释放

HTTP请求与响应

浏览器输入域名并回车的过程


OSI七层模型与TCP/IP七层模型

物理层,数据链路层,网络层,传输层,应用层(会话层,表示层,应用层)

其中:IP协议属于网络层;TCP、UDP属于传输层;HTTP、DNS属于应用层

数据封装:每一层接受上层数据后,都会在数据前添加自己特定的头部数据。

IP数据报格式

重要的几个参数

  • 第一行:版本,首部长度(单位4byte字节),总长度(单位1B)
  • 第二行:用于IP数据报分片的三个参数? 标识(同一数据报的不同分片使用相同标识),标志(用于标志该数据报是否允许分片),片偏移(单位8B,大小为某片数据报在原数据报中的位置)
  • 第三行:生存时间(降到0则丢弃该数据报),协议(数据部分是什么协议,即上层传下来的是什么协议的报文,其中TCP则为6,UDP则为17),
  • 第四行,第五行:源地址,目的地址,长度均为32位(bit)
  • 第六行:有个填充,负责将首部长度填充为4的整数倍(因为首部长度是以4byte为单位的)?

UDP协议

UDP报文格式:第一行:源端口号,目的端口号;第二行:UDP报文段的总长度,检验和;

其主要是在IP数据报服务之上增加了差错检测的功能

TCP连接与释放

1、TCP报文主要包括以下几个重要内容:源端口,目的端口,序号(seq),确认号(ack),6个控制位{确认位(ACK),同步位(SYN),终止位(FIN)}

2、号或者位的作用

序号seq:字节流中字节的编号

确认号ack:期望收到报文段的第一个字节的序号

确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1

同步位SYN:SYN=1表明是一个连接请求、连接接受报文,即正在建立连接

终止位FIN:FIN=1表明发送方数据已经发完,要求释放连接

3、连接建立的过程(三次握手)

  • 第一次握手:客户端发送连接请求报文。其中同步位SYN=1,序号seq=x(随机数)
  • 第二次握手:服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文。其中同步位SYN=1,确认位ACK=1,序号seq=y(随机数),确认号ack=x+1
  • 第三次握手:客户端为本次TCP连接分配缓存和变量,并向服务器端返回确认报文,注意本次报文可以携带数据。其中同步位SYN=0,确认位ACK=1,确认号ack=y+1,序号seq=x+1
  • 半连接:服务器向客户端发送了确认报文,但还没有收到客户端返回的确认,连接了但没完全连接的状态。注意的是,该状态下,服务端已经为本次连接分配了资源
  • SYN洪泛攻击:基于服务器端在第二次握手时就完成了资源分配,客户端是在第三次握手时完成资源分配。SYN攻击就是短时间内向服务器端发送大量的连接请求,但不返回第三次握手的确认报文,从而导致服务器端重复发送ACK以及因半连接状态而消耗大量资源,导致服务器死机。另一个角度是,大量未完成三次握手的半连接导致半连接队列满,从而正常的SYN请求因为队列已满而被丢弃,导致网络拥塞。

4、连接释放(四次挥手)

参与TCP连接的两个进程任何一个都能终止该连接,连接结束后,主机中的资源(缓存和变量)会被释放。下面以客户端先发起关闭连接请求为例。

  • 第一次挥手:客户端发送连接释放报文,停止不再发送数据。其中终止位FIN=1,序号seq=u
  • 第二次挥手:服务端收到连接释放请求报文后,向客户端返回一个确认报文(其中确认位ACK=1,序号seq=v,确认号ack=u+1)。此时该连接进入半关闭状态(TCP中连接的一端在结束它的发送后还能接受来自另一端数据的能力)
  • ……服务端发送完它还想要发送的数据……
  • 第三次挥手:服务端发完数据,想客户端发送连接释放请求报文。其中终止位FIN=1,序号seq=2,确认号ack=u+1,确认位ACK=1
  • 第四次挥手:客户端收到来自服务端的连接释放请求后,返回一个确认报文(其中 确认位ACK=1,序号seq=u+1,确认号ack=w+1)。在等待一段时间后,连接彻底断开(时间为2MSL—2倍最长报文段寿命,防止服务端没有收到来自客户端的第四次挥手的确认报文,从而出现?服务端一直发送第三次挥手的连接释放报文以接受到来自客户端的第四次挥手的确认报文 的情况)

UDP与TCP的区别

  • TCP是面向连接,可靠的传输,但效率低;UDP是无连接的,不可靠的传输,但效率高
  • TCP面向字节流传输,因此他可以将数据进行分片,并在接收端重组;UDP是面向数据报的传输,不能分组传输
  • TCP提供拥塞控制和流量控制机制;UDP不提供拥塞和流量控制机制

HTTP请求与响应

一个http报文由 请求(响应)行,请求(响应)头部,空行,请求(响应)数据4个部分构成。请求行和请求头可以合称为报文首部,与剩下的报文主体(主体数据)之间用空行隔开

1、(浏览器端)HTTP请求

? ? ? ? HTTP请求报文的结构可以分为请求行,请求头,请求体

请求行包括:请求方法(常规的有get post delete ...),url地址,协议名称及版本号

请求头:报文头包含若干个属性。其格式为“属性名:属性值”。其中报文头的host属性(接收请求的主机名和端口号)与请求行的URL一起组成完整的请求URL。referer表示先前网页的地址,即该请求来自哪里

请求体(报文体):包含数据的主体部分

2、(服务器端)HTTP响应

响应行包括:报文协议及版本,状态码及状态描述

? ? ? ? 常见状态码:2**表示成功,3**表示需要重定向,4**表示客户端错误,5**表示服务端错误。200表示成功处理请求,400为语法错误,一般为参数错误;403表示禁止访问,404页面未丢失,408请求超时。500服务器遇到错误

响应头:几个属性,也是“属性名:属性值”

响应体:为请求需要得到的具体数据局,可以为任何类型的数据

浏览器输入域名并回车的过程

DNS解析,TCP连接,发送http请求,服务器端http响应,TCP连接断开,浏览器解析资源

1、根据域名,通过DNS域名解析,获取到域名对应的IP地址

1、查询本地DNS缓存,如果有直接获取到IP地址,如果没有,则向本地域名服务器发送DNS查询请求。

2、本地域名服务器向根域名服务器发送查询请求,根域名服务器返回该域名的一级域名服务器信息

3、本地域名服务器向返回的一级域名服务器发送查询请求,然后按照以上的操作依次查询各级域名服务器,知道查询到该域名对应的IP地址

2、根据IP地址和默认端口80与服务器建立连接

? ? ? ? 根据服务器的IP地址和端口号,就开始和远程服务器建立TCP连接,即TCP的三次握手过程

3、浏览器想服务器发送HTTP请求

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

5、浏览器解析渲染页面

6、连接结束

点对点,端对端

端到端通信是针对传输层的(传输层开始用端到端,下面的层用点对点)

????????端到端是 针对传输层的一个网络连接,忽略中间的设备,在发送端和接收端之间为数据传输建立一条链路。

优点:链路建立后,发送端知道接收端一定能收到,而且中间交换设备时不需要存储转发,因此传输延迟小?

缺点:在接收端收到数据前,发送端要一直参与传输工作,如果整个传输延迟很久,则会造成发送端的时间和资源浪;?如果接收端关闭或故障,则无法进行端到端传输

点对点通信是针对数据链路层和网络层的

????????点对点是针对数据链路层或者网络层,基于Mac地址或IP地址的连接。指发送端通过一台台直接相连的设备将数据发送到接收端

优点:发送端数据从他自己这儿发送出去后,任务就完成了,从而不会出现发送端资源浪费的情况;即使接收端故障了,点对点传输也可采用存储转发技术进行缓冲。

缺点:发送端不知道接收端 接收数据的情况

http 长(持久)连接

长连接:在经过三次握手,建立TCP连接后,在数据传输完成后仍然保持TCP连接,等待同域名下继续用这个通道传输数据。HTTP 1.0默认保持长连接

短连接:在经过三次握手,建立TCP连接后,在一次数据传输完成后,就进行四次挥手,断开连接。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章           查看所有文章
加:2021-07-24 11:51:07  更:2021-07-24 11:53:44 
 
开发: 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 17:16:18-

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