当前位置: 首页 > news >正文

计算机网络 - 万字长文

计算机网络

  • 二、计算机网络
      • 2.1 七层模型表格
      • 2.2 通俗讲解七层模型
      • 2.3 TCP与UDP对比
      • 2.4 TCP 三次握手
        • 过程
        • ==为什么握手是三次,而不是两次或者四次?==
        • ==三次握手可以携带数据吗?==
        • ==TCP三次握手失败,服务端会如何处理?==
        • ==什么是半连接队列?全连接==
        • ==ISN(Initial Sequence Number)是固定的吗?==
      • 2.5 TCP的四次挥手
        • 过程
        • ==为什么握手是三次,而挥手时需要四次呢?==
        • ==TIME_WAIT状态有什么作用,为什么主动关闭方没有直接进入CLOSED状态释放资源?==
        • ==为什么TIME_WAIT状态需要经过2MSL才能进入CLOASE状态?==
        • ==一台主机上出现大量的TIME_WAIT是什么原因?应该如何处理?==
        • ==一台主机上出现大量的CLOSE_WAIT是什么原因?应该如何处理?==
        • 总结
      • 2.6 TCP 拥塞控制
      • 2.7 TCP粘包、拆包问题
      • 2.8 TCP滑动窗口
      • 2.4 HTTP-超文本传输协议
        • 定义
        • 超文本?传输?协议?
        • HTTP请求
        • HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文
        • HTTP响应报文也是由三部分组成: 状态码, 响应报头和响应报文
        • HTTP 常见错误码与原因
      • 2.5 HTTP各版本对比
      • 2.6 HTTP 三次握手
        • 过程![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fd86b2c5075b4a3398d639cf69d470b3.png#pic_center =260x260)
      • 2.7 HTTPS
        • 定义
        • HTTPS特点
        • ttps的ssl加密是如何做的
      • 2.8 URI、URL 和 URN
      • 2.9 从浏览器 URL 到页面展示发生了什么?
      • 2.10 加入给你三台服务器,如何管理
      • 2.11 简述DNS进行域名解析的过程
      • 2.12 RabbitMQ是什么东西
      • 2.13 请列出你了解的web服务器负载架构
      • 2.14 讲述一下LVS三种模式的工作过程
      • 2.16 keepalive的工作原理和如何做到健康检查
      • 2.17 简述cookie和session的区别

二、计算机网络

2.1 七层模型表格

网络设计者以分层的方式组织协议,每一层都是向上服务的,每个分层中所有的协议称为协议栈

OSI功能协议
应用层文件传输、电子邮件、文件服务、虚拟终端TFTP,HTTP,SNMP,FTP,STMP,DNS,Telnet
表示层数据格式化、代码转换、数据加密-解决不同主机的通信的数据格式问题
会话层解除或建立与其它接点的联系-建立和管理应用程序之间的通信
传输层提供端对端的接口;TCP、UDP-拆包组包TCP,保证数据的完整性,以及传输过程中可能发生的危险UDPTCP、UDP
网络层为数据包选择路由;IP、ICMP、RIP、OSPF-路由解析和地址解析选择适当的网络节点进行路由IP
数据链路层传输有地址的帧以太网
物理层定义通信的物理设备规格,网络接口类型,光纤接口类型实际物理传输介质

2.2 通俗讲解七层模型

  • 物理层:两台计算机想要连接,要做的第一件事就是把这台计算机与另外的其它计算机连接起来,比如通过光纤、电缆等介质。通过高低电频来传送0、1的信号

  • 数据链路层:这样一大堆01的信号,**鬼都看不懂,所以有了一套标识**以太网

    • 以太网:一组电信号构成一个数据包,我们把这个数据包称之为帧。每一个桢由标头(Head)和数据(Data)两部分组成,标头部分主要是一些说明数据,例如发送者,接收者等信息。而数据部分是这个数据包具体的,想给接收者的内容
    • MAC:那么把一台计算的数据通过物理层和链路层发送给另一台计算机,究竟是发给谁的,计算机之前如何区分MAC出现了
      • 连入网络的每一个计算机都会有网卡接口,每一个网卡都会有一个唯一的地址,这个地址就叫做 MAC 地址
    • 广播:新的问题出现了,A计算机虽然知道了B的MAC地址,但是a却不知道计算机B分布在那边路线上,有了广播的出现
      • 广播就是A计算机向所有子网中的计算机发送数据包,计算机收到包之后会解析MAC地址,如果与自己的相同,接收,不相同就不接收,就像大街上的广播呼叫某个人一样
    • ARP:新的问题又出现了,A计算机怎么知道B的mac地址的ARP协议就出现了
      • 判断完两台主机处于同一个子网之中,通过ARP计算出另一个计算机的MAC地址
  • 网络层

    • 子网:所处的网络是由无数个子网组成的,广播的时候只有同一个子网里面的计算机能收到,如果所有的计算机都能收到那还得了,所以有了子网
    • IP协议:问题又来了,如何区分MAC地址是属于一个子网的,假如是同一个子网,那么我们就以广播的形式转发出去,如果不是,那就把数据发给网关,让网关转发,于是有了IP
      • IP 地址由 32 位的二进制数组成,0.0.0.0~255.255.255.255,IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分所占用的二进制位数是不固定的,如果两台计算机的网络部分是一样的,那么就是处于一个子网中,那么网络部分只知道是前部分,具体是占几位,不知道啊,所以子网掩码出现了
        • 子网掩码与IP地址一样也是32位进制数,不过网络部分都是1,主机部分规定全部为0
        • 计算方法:例如,192.168.43.1和192.168.43.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中
          • ARP协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包,如果接收包的计算机发现MAC与自己的相同,就把自己的MAC回给对方,否则就抛弃
    • DNS:如何知道对方的IP地址呢,当然是计算机的操作者来输入,但是我们输入的是域名,会有DNS服务器
  • 传输层

    • 经过物理层、数据链路层以及以太网的互相帮助,已经把数据成功从计算机A送到计算机B了,可是计算机B里面含有各种各样的程序,计算机如何知道这些数据是给谁的?端口就出现了
    • 也就是说,传输层的功能就是建立端口到端口的通信,相比网络层是建立主机到主机的通信,也就是说有了IP和端口就可以准确通信
    • 有人说输入IP地址,并没有确定端口啊,其实某些传输协议已经默认端口了,比如http的传输默认端口是80,这些端口信息也包含在数据包里的
    • 传输层最常见的两大协议是TCP、UDP协议
  • 应用层

    • 这一层最接近用户了,虽然接收到了传输传来的数据,可是这些数据五花八门:html,MP4 等
    • 所以要指定这些数据的格式规则,收到后才能解读渲染

    2.3 TCP与UDP对比

对比项目TCPUDP
是否面向连接
是否可靠
是否有状态
传输效率较慢较快
传输形式字节流数据报文段
协议HTTP、HTTPS、FTP、 SMTP、POP3/IMAP、TelnetHDCP、DNS、HTTP 3.0

2.4 TCP 三次握手

过程

在这里插入图片描述

  • 服务器新建套接字,绑定地址信息后开始监听,进入listen状态
  • 客户端新建套接字绑定地址信息后调用connect,发送连接请求SYN,进入SYN_SENT状态,等待服务器确认
  • 服务器监听到请求之后,将连接放入内核等待队列中,并向客户端发送SYN和确认报文段ACK,进入SYN_RECD状态
  • 客户端收到sYN+ACK报文段后向服务端发送确认报文段,并进入established状态,开始读写数据
  • 服务端接收到客户端的确认报文,就进入established状态,进行读写数据
为什么握手是三次,而不是两次或者四次?
  • 两次不安全,四次没必要。tcp通信就是确保双方都具有数据收发的能力,得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信能力
  • 第一次握手是客户端发送SYN,服务端接收-服务端得出客户端的发送能力和服务端的接收能力都正常
  • 第二次握手是服务端发送SYN+ACK,客户端接收-客户端得出客户端接收能力正常,服务端发送能力正常,但是服务端还不知道客户端能否接收正常
  • 第三次握手是客户端发送ACK,服务器接收,-服务端得出客户端的收发

相关文章:

计算机网络 - 万字长文

计算机网络 二、计算机网络2.1 七层模型表格2.2 通俗讲解七层模型2.3 TCP与UDP对比2.4 TCP 三次握手过程==为什么握手是三次,而不是两次或者四次?====三次握手可以携带数据吗?====TCP三次握手失败,服务端会如何处理?====什么是半连接队列?全连接====ISN(Initial Sequence…...

基于java+springboot+vue实现的仓库管理系统(文末源码+lw+ppt)23-499

第1章 绪论 伴随着信息社会的飞速发展,仓库管理所面临的问题也一个接一个的出现,所以现在最该解决的问题就是信息的实时查询和访问需求的问题,以及如何利用快捷便利的方式让访问者在广大信息系统中进行查询、分享、储存和管理。这对我们的现…...

网络安全概述

这里写目录标题 信息安全现状及挑战概念常见的网络安全术语恶意程序的特点 信息安全的脆弱性网络环境的开放性协议栈道的脆弱性(缺乏认证和加密 完整性) 常见安全攻击传输层 ---TCP SYN Flood攻击分布式拒绝服务攻击(DDOS)社会工程学攻击钓鱼攻击水坑攻击…...

Java传引用问题

本文将介绍 Java 中的引用传递,包括其定义、实现方式、通过引用修改原来指向的内容和通过引用修改当前引用的指向的区别 目录 1、引用传递的概念 2、引用传递的实现方式 3、传引用会发生的两种情况: 通过引用修改当前引用的指向 通过引用修改原来指…...

P8086 『JROI-5』Music

题目背景 请注意到并不正常的时间限制。 本题读入量较大,建议使用较快的读入方式。 小 C 每年都要给丁总氪钱。 题目描述 小 C 喜欢在网易云听歌,她希望你能帮助她计算一下她的网易云的听歌时间。 小 C 有 n 条听歌记录,每条形如 x t&a…...

【Java]认识泛型

包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。 除了 Integer 和 Character, 其余基本类型的包装类都是首字母大写。 泛型 泛型是在JDK1.5引入的…...

git要忽略对文件的本地修改

要忽略对文件的本地修改(即,使Git忽略对该文件的任何未提交更改),可以使用以下命令将该文件标记为假设未更改(assume-unchanged): sh git update-index --assume-unchanged runtime/x64/skin/s…...

Linux学习笔记(三)文件权限

一、权限的分类 Linux权限分为r(读取)、w(写入)、x(执行)。我们在终端执行ls -l命令查看文件详细信息显示如下: [root@srv sun]# ls -l 总用量 0 drwxr-xr-x. 2 sun root 6 7月 5 14:05 公共 drwxr-xr-x. 2 sun root 6 7月 5 14:05 模板 drwxr-xr-x. 2 sun root…...

自定义类TMyLabel继承自QLabel ,实现mouseDoubleClickEvent

自定义类TMyLabel ,继承自QLabel TMyLabel 中重新实现了 event 方法,重写了mouseDoubleClickEvent 发射信号 在主窗体中放入TMyLabel组件,将TMyLabel mouseDoubleClickEvent 信号, 绑定到实现方法do_doubleClick()槽函数 TMy…...

逻辑回归模型(非回归问题,而是分类问题)

目录: 一、Sigmoid函数:二、逻辑回归介绍:三、决策边界四、逻辑回归模型训练过程:1.训练目标:2.梯度下降调整参数: 一、Sigmoid函数: Sigmoid函数是构建逻辑回归模型的重要函数,如下…...

qt hasPendingDatagrams() 函数

hasPendingDatagrams 是 Qt 框架中 QUdpSocket 类的一个方法,用于检查是否有待处理的数据报到达。在 UDP 通信中,数据以数据报的形式发送,而 QUdpSocket 类提供了用于接收和处理这些数据报的功能。 功能描述 hasPendingDatagrams() 方法用于…...

数据结构第08小节:双端队列

双端队列(deque,double-ended queue)是一种具有队列和栈特性的数据结构,允许在其两端进行插入和删除操作。在Java中,java.util.Deque接口就是双端队列的实现,而ArrayDeque和LinkedList是其中的具体实现类。…...

Python骨架肌体运动学数学模型

🎯要点 🎯运动学矢量计算 | 🎯跳远的运动学计算 | 🎯关节肢体运动最小加加速度模型 | 🎯膝关节和踝关节角度二维运动学计算 | 🎯上下肢体关节连接运动链数学模型 | 🎯刚体连接点速度加速度计算…...

二叉树的序列化和反序列化(Java)

概述 关于面试中常见的其他二叉树算法题,参考面试算法之二叉树(Java)。二叉树的定义(注意到有使用lombok提供的两个注解): lombok.Data lombok.AllArgsConstructor private static class TreeNode {private TreeNode left;priva…...

Java中的泛型类

Java中的泛类 Java 的泛型(Generics)是一种语言特性,允许你定义类、接口和方法时使用类型参数。这使得代码更具可读性和安全性,因为编译器能够在编译时检查类型,而不是在运行时。 泛型类 定义泛型类时,可…...

57、Flink 的项目配置概述

1)概览 1.开始 要开始使用 Flink 应用程序,请使用以下命令、脚本和模板来创建 Flink 项目。 可以使用如下的 Maven 命令或快速启动脚本,基于原型创建一个项目。 a)Maven 命令 mvn archetype:generate \-Darch…...

零基础自学爬虫技术该从哪里入手?

零基础学习Python并不一定是困难的,这主要取决于个人的学习方法、投入的时间以及学习目标的设定。Python是一门相对容易入门的编程语言,它有着简洁的语法、丰富的库和广泛的应用领域(如数据分析、Web开发、人工智能等)&#xff0c…...

Vue.js 基础入门指南

前言 在前端开发的广阔领域中,Vue.js 无疑是一颗璀璨的明星,以其渐进式框架的特性吸引了无数开发者的目光。Vue.js 旨在通过简洁的 API 实现响应式的数据绑定和组合的视图组件,使得构建用户界面变得既快速又简单。本文将带你走进 Vue.js 的世…...

山泰科技集团陈玉东:争当数字化时代的知识产权卫士

随着互联网和数字技术的飞速普及,大版权时代已经悄然到来。在这个新时代,信息的传播速度、广度和深度均达到了前所未有的高度,极大地拓展了人们的精神世界和知识视野。然而,这一科技发展的浪潮也为版权保护带来了前所未有的挑战。…...

WBCE CMS v1.5.2 远程命令执行漏洞(CVE-2022-25099)

前言 CVE-2022-25099 是一个影响 WBCE CMS v1.5.2 的严重安全漏洞,具体存在于 /languages/index.php 组件中。该漏洞允许攻击者通过上传精心构造的 PHP 文件在受影响的系统上执行任意代码。 技术细节 受影响组件:/languages/index.php受影响版本&…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...