《葵花宝典》计算机网络篇幅

2023-05-16

文章目录

    • 七层网络模型和五层网络模型, 以及各自都有哪些常见协议?
    • TCP、UDP对比,使用选择
    • TCP为什么可靠、UDP怎样才能可靠
    • 扩展考察点: QUIC 协议
    • TCP、UDP报文头部格式
    • TCP三次握手挥手四次挥手过程
    • 扩展: TCP两次握手
    • SYN泛洪攻击原理及解决方案
    • 为什么要等待2MSL(time_wait用处)
    • 服务方大量close_wait状态原因及解决方案
    • HTTP请求响应报文格式
    • HTTPS连接过程
    • HTTP & HTTPS 比较
    • 常见HTTP状态码
    • HTTP历史版本变化
    • cookie & session 作用和区别
    • DNS递归和迭代查询(应用层)
    • IO多路复用SELECT, POLL, EPOLL对比
    • tcp三次握手,第一次握手如果服务器不响应会发生什么:
    • PING实现原理

七层网络模型和五层网络模型, 以及各自都有哪些常见协议?

物理层

链路层

网络层:ARP, IP, ICMP

传输层:TCP UDP

会话层  |

表示层  | --- HTTP SMTP POP SSL FTP

应用层  |

TCP、UDP对比,使用选择

a. TCP是面向连接的可靠数据传输服务,UDP则提供无连接的不可靠数据传输服务
b. TCP只支持点到点的数据传输服务, UDP支持一对一、一对多、多对一、多对多交互通信
c. TCP有拥塞控制、流量控制; UDP没有拥塞控制
d. TCP首部开销大,20字节,UDP首部开销小,8字节
e. TCP报文长度是动态的,有接收方窗口大小和当前网络拥塞情况决定; UDP面向报文,不合并,不拆分,保留上面传下来报文的边界
选择:需要数据完整可靠:TCP;   需要通信实时性:UDP

TCP为什么可靠、UDP怎样才能可靠

为什么可靠:校验和、序列号和确认应答、超时重传、流量控制、拥塞控制。

UDP怎么实现:参照tcp在应用层模仿可靠性传输机制
	1、添加seq/ack机制,确保数据发送到对端
	2、添加发送和接收缓冲区,主要是用户超时重传。
    3、添加超时重传机制

扩展考察点: QUIC 协议

TCP、UDP报文头部格式

https://zhuanlan.zhihu.com/p/40013850

TCP三次握手挥手四次挥手过程

https://zhuanlan.zhihu.com/p/40013850

扩展: TCP两次握手

最后一次应答可以直接带数据了, 所以可以看成只需要两次握手

SYN泛洪攻击原理及解决方案

攻击者发送TCP的SYN,服务器返回ACK后,该攻击者就不对其进行确,那么这个TCP连接处于挂起状态。攻击者如果发送非常大量的这种TCP连接,服务器消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务。

当服务器接收到一个SYN报文段时,服务器不会为该报文段生成一个半开的连接 ,而是哈希映射记录其身份信息。如果客户合法,则会返回ACK报文,再建立套接字连接。

为什么要等待2MSL(time_wait用处)

等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。
在TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。
如果TIME_WAIT状态保持时间不足够长,第一个连接就正常终止了。第二个拥有相同五元组的连接出现,而第一个连接的重复报文到达,干扰了第二个连接。TCP事先必须防止某个连接的重复报文在连接终止后出现,所以让TIME_WAIT状态保持时间足够长(2MSL),连接相应方向的上的TCP报文要么完全响应完毕,要么被丢弃。建立第二个连接的时候,不会混淆。

服务方大量close_wait状态原因及解决方案

出现大量CLOSE_WAIT的原因很简单,就是某一方在网络连接断开后,没有检测到这个错误,没有执行closesocket,导致了这个状态的实现

HTTP请求响应报文格式

请求行--首部行--空行--实体行
状态行--首部行--空行--实体行

HTTPS连接过程

a. 客户端请求建立SSL连接,把自己支持的加密规则发送给网站
b. 网站选择一组加密算法和hash算法,把自己身份信息以证书形式发回给客户端,其中证书信息包含(网站地址、加密公钥、证书颁发机构等)
c. 客户端获取证书后
    i. 验证证书合法性
    ii. 生成一串随机数作为密码(对称密钥),并使用公钥进行加密
    iii. 使用约定好hash计算握手消息
    iv. 使用对称密钥对消息进行加密,并把信息发送给网站
d. 网站接收到消息后
    i. 使用私钥解密,取出对称密钥
    ii. 使用对称密钥解密握手消息,并验证hash是否一致
    iii. 使用对称密钥加密一段握手消息发送给游览器
e. 游览器解密并验证hash验证,如果hash一致,则握手结束
f. 双方使用对称加密算法进行数据加密、传输

HTTP & HTTPS 比较

1. 安全性: 明文   ---   SSL/TSL加密传输
2. 端口:   80     ---   443
3. HTTPS在TCP三次握手后,还需要进行SSL握手,协商对称加密秘钥
4. HTTPS需要申请服务端证书

常见HTTP状态码

lxx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。

301 moved permanently (永久重定向)
302 move temporarily(临时重定向)
403 Forbidden:服务器收到请求,但是拒绝提供服务。

HTTP历史版本变化

HTTP/0.9:功能简陋,只支持GET方法,只能发送HTML格式字符串。
HTTP/1.0:支持多种数据格式,增加POST、HEAD等方法,增加头信息,每次只能发送一个请求(无持久连接)
HTTP/1.1:默认持久连接、请求管道化、增加缓存处理、增加Host字段、支持断点传输分块传输等。
HTTP/2.0:二进制分帧、多路复用、头部压缩、服务器推送

cookie & session 作用和区别

1. 存储格式:Cookie 只能保存 ASCII, Session 可以存任意数据类型
2. 有效期:Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
3. 隐私策略:Cookie 存储在客户端,比较容易遭到不法获取;Session 存储在服务端,安全性相对 Cookie 要好一些。
4. 大小限制:单个 Cookie 保存的数据不能超过 4K;Session 可存储数据远高于 Cookie。

DNS递归和迭代查询(应用层)

a. 从主机到本地dns服务器为递归查询
b. 其余查询皆为迭代查询(根域名-顶级域名-二级域名-三级域名-四级域名、、、--权威名称服务器

IO多路复用SELECT, POLL, EPOLL对比

事件集,最大支持文件描述符数,工作模式,具体实现四个方面对比

1. 事件集合:
    1. fd和事件分离,每次需重置三个参数(读,写,异常)集合
    2. fd和事件绑定
    3. 在内核维护一个事件表
2. 支持FD数:
    1. 默认低于1024
    2. 系统最大允许65535
    3. 系统最大允许65535
3. 工作模式:
    1. LT
    2. LT
    3. LT(Level Trigger) / ET(Edge Trigger) 
4. 具体实现:
    1. 轮询o(n)
    2. 轮询o(n)
    3. 回调o(1)

Epoll_wait适用于连接数多,但活动连接较少的情形,避免回调函数被频繁触发。

tcp三次握手,第一次握手如果服务器不响应会发生什么:

超时时间由重传超时时间(默认1秒钟(1*HZ))和重传次数TCP_SYNACK_RETRIES(默认5次)决定。现象如下:
	
SYN无响应,隔1s,重传第1次,再隔2s,重传第2次,再隔4s,重传第3次,再隔8s,重传第4次,再隔16s,重传第5次,再隔32s,超时重传次数到了,断开链接。
	
https://blog.csdn.net/xuhao07/article/details/100037712

PING实现原理

互联网控制消息协议ICMP (Internet Control Message Protocol)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《葵花宝典》计算机网络篇幅 的相关文章

  • windows下Linaro-arm-linux编译开启NEON的Opencv源码详细过程

    环境配置 1 windows安装cmake 下载地址 xff1a https cmake org download 按照上图中的下载cmake的安装包 xff0c 安装注意事项如下 xff1a 安装路径切记不能包含空格 xff01 xff0
  • Windows 工具之net

    net 是windows平台下用户管理的工具 xff0c 可以来添加 xff0c 删除和修改用户 1 创建用户 xff1a win 43 R 输入cmd xff0c 然后打开命令行窗口 xff0c 输入下面的命令 xff1a net use
  • windows平台相关命令收集

    1 获取IP地址命令 xff1a ipconfig 2 获取MAC地址命令 xff1a ipconfig all 3 查看所有端口信息 netstat nal findstr 8080
  • C/C++中比较好用的HTTP开源库

    以下是一些常用的C C 43 43 开源HTTP库及其对应的开源协议和链接 xff1a 1 libcurl xff1a 使用MIT X开源协议 xff0c 支持多种协议和多种数据传输方式 xff0c 被广泛应用于各种开发场景 官网链接 xf
  • 为Ubuntu网页设置稳定的数据隧道

    网站作为互联网世界中的一个个门户 xff0c 是我们对外表达的窗口 xff0c 无数个人和企业通过这个窗口传递着信息 xff0c 这个传递信息的窗口必须稳定持续存在 xff0c 才能让更多访客看到 xff0c 为我们带来更多的流量 而使用c
  • VisualStudio配置与Matlab混合编译问题总结

    VisualStudio配置与Matlab混合编译问题总结 写这篇博客记录一下自己在配置过程中遇到的种种问题 xff0c 也做一个小小总结 xff0c 试图把整个过程讲明白 xff0c 希望对面临同样问题的人有所帮助 网上此类教程很多 xf
  • C++与C的区别(作业)

    头文件的区别 1 C 43 43 中创建源文件后缀为 cpp xff0c C语言中创建源文件后缀为 c xff0c 头文件保持不变 xff0c 后缀为 h 2 包含自己的头文件 xff0c C语言与C 43 43 无区别 包含库目录 xff
  • C++和C语言区别(二)附二级指针的动态内存申请

    结构体区别 1 定义结构体与C语言一致 2 定义变量可省略关键字struct 3 C 43 43 结构体中允许函数存在 xff08 C 43 43 在没有写构造函数和权限限定的时候 xff0c 用法和C语言一致 xff09 xff08 1
  • 自制芯片 http转串口通信模块实现手机控制加红外控制51单片机实现双控制 28BYJ-48步进电机( 13003步进电机驱动器 STC89C52RC ESP8266)

    首先你有这样的8266 这种8266自身带2个按键和烧录芯片方便调试 xff0c 综合性价比较高 还需要有一个51单片机 或者其他单片机都行 还有就是需要这样的13003步进电机驱动器 43 28BYJ 48步进电机和红外接收头以及遥控器
  • C++类和对象(附C语言与C++链表)

    类和对象的基本概念 1 类 xff1a 一系列事物的抽象 xff0c 万物皆可为类 xff08 1 xff09 属性 xff1a 事物的特征 数据类型的描述 xff08 2 xff09 行为 xff1a 事物的操作 函数描述 2 对象 xf
  • C++类的组合

    1 以另一个类的对象为数据成员 xff0c 必须采用初始化参数列表的写法 include lt iostream gt include lt string gt using namespace std class Boy public Bo
  • C++模板

    函数模板 1 把类型当作未知量 2 语法 template lt typename Ty gt Ty function Ty a Ty b return a gt b a b template lt class Ty1 class Ty2
  • C++STL容器(一)

    定长数组 include lt iostream gt include lt string gt include lt array gt using namespace std template lt class Ty size t siz
  • C++STL容器(二)

    链表 include lt iostream gt include lt string gt include lt list gt include lt functional gt 仿函数less和greater头文件 using name
  • C++正则表达式

    regex match regex replace regex search include lt iostream gt include lt regex gt include lt string gt using namespace s
  • C++时间管理和随机数

    时间段 include lt chrono gt duration TYPEDEFS typedef duration lt long long nano gt nanoseconds 纳秒 typedef duration lt long
  • C++文件系统

    filesystem include lt filesystem gt include lt iostream gt using namespace std int main 打开文件夹 filesystem path url 34 fil
  • arduino之旅——L298N驱动小车前进后退

    今天开始组装小车 xff0c 但是把小车底板 xff0c arduino mega 2560芯片 xff0c L298N xff0c 减速电机 xff0c 还有电源相应地连接好后 xff0c 从网上找了如下程序 xff08 源程序来自 xf
  • ODROID XU4 内核编译

    准备材料 一个64位的Linux系统 一份内核源码 交叉编译工具链 添加交叉编译工具链 下载链接 sudo mkdir opt toolchains sudo cp arm eabi 4 6 tar gz opt toolchains cd

随机推荐