计算机网络 - 万字长文

计算机网络

  • 二、计算机网络
      • 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,服务器接收,-服务端得出客户端的收发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的太阳能热水器控制系统设计

随着我国经济水平的不断提高,民众对生活质量的追求也在不断进步,对于现代家庭而言,热水器成为了必备的生活电器。目前市面上的电器主要是电热水器、燃气热水器以及太阳能热水器。就能源节约性能而言,太阳能热水器占据了绝对优势&a…

Java | Leetcode Java题解之第223题矩形面积

题目: 题解: class Solution {public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth Math.min(ax2, bx2) -…

C语言8 数组与字符串

目录 一、数组 定义和初始化 访问数组元素 多维数组 定义和初始化二维数组 访问二维数组元素 多维数组的更多示例 三维数组 访问三维数组元素 二、字符串 定义和初始化字符串 访问字符串元素 字符串操作 计算字符串长度 字符串复制 字符串连接 字符串比较 字…

开源高效在线电子表格解决方案:Luckysheet

Luckysheet:体验幸运,掌握高效数据表格编辑!- 精选真开源,释放新价值。 概览 Luckysheet 是一个功能强大、配置简单且完全开源的在线电子表格工具,它类似于我们熟知的 Excel,但更加灵活和易于集成。它是一…

windows环境下部署多个端口Tomcat服务和开机自启动设置保姆级教程

前言 本文主要介绍了 windows环境下,配置多个Tomcat设置不同端口启动服务。其实在思路上Linux上也是适用的,只是 Linux 上没有可视化客户端,会麻烦些,但总体的思路上是一样的。 注:文章中涉及些文字和图片是搬运了其他…

如何调整Oracle SGA的大小

调整Oracle SGA(System Global Area,系统全局区)的大小可以通过两种主要方式实现:手动设置和自动管理。以下将详细介绍这两种方法: 一、手动设置SGA大小 确定SGA各组件的大小 SGA由多个组件组成,包括数据…

企业如何利用短视频平台做口碑塑造和品牌营销?

随着短视频平台的不断发展,新型的双微一抖小红书等新媒体平台,正在成为网民聚集的核心平台,小马识途营销顾问认为越来越多的企业应该利用这些平台进行品牌营销和宣传。其中,抖音和小红书作为短视频平台的代表,吸引了大…

麒麟系统部署BS架构的系统

一、安装jdk 自带的即可,不必另外安装 二、安装MySQL 麒麟系统安装MySQL 三、安装Redis 麒麟系统安装Redis 四、安装Nginx 麒麟系统安装Nginx 五、数据库初始化 1、登录MySQL mysql -uroot -p 2、创建数据库 create database dbname; createt database…

OpenGL3.3_C++_Windows(28)

Demo演示 demo 视差贴图 视差/高度/位移贴图(黑--白):和法线贴图一样视差贴图能够极大提升表面细节,使之具有深度感。第一种思路(置换顶点):对于一个quad ,分成约1000个顶点&#x…

【ARMv8/v9 GIC- 700 系列 1 -- Programmers model for GIC-700】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC-700 Programmers model寄存器实现和访问模式接口宽度和数据格式访问类型安全寄存器访问地址映射和页面GIC-700 Register map pagesSummaryGIC-700 Programmers model GIC-700是ARM的一种通用中断控制器,它遵循GICv3和GICv4架构…

C语言 | Leetcode C语言题解之第223题矩形面积

题目: 题解: int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth fmin(ax2, bx2) - fmax(ax1, bx1), overlapHei…

Unity 改造编辑器组件字段显示

关于Unity中组件选择枚举的不同,其他属性跟着变的功能一直没有写,今天补上, 首先定义一个MaskScroll滚动的组件,这个组件支持水平和竖直方向上的滚动,还有加速减速滚动的功能 using System.Collections; using System.Collectio…

Visual Studio Code 教程 VsCode安装Live Server以服务形式打开html

搜索Live Server 插件,然后安装 选一个html文件,右键点击 Open with live server,然后就自动弹出来了

使用paddleOCR训练自己的数据集到ONNX推理

一、环境安装 1、安装paddlepaddle; https://www.paddlepaddle.org.cn/ 这里安装2.6.1的话使用onnx会出现swish算子报错的问题 python -m pip install paddlepaddle-gpu2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple验证是否成功安装 python import paddl…

一起学Hugging Face Transformers(14)- “自定义训练循环”问题解答

文章目录 前言问题一:可以详解下面这两段代码吗?1. 训练步骤的计算2. 学习率调度器的定义3. 作用总结4. 示例详细解释 问题二:学习率是什么学习率的重要性例子学习率调度器学习率调度策略示例代码 问题三:什么是 num_warmup_steps…

Mysql Workbench的使用

本篇内容:对Mysql Workbench的常规使用学习 一、知识储备 1. Workbench 可以做什么 是mysql数据库可视化管理的一款免费工具,除了平常的通过sql语句,进行创建数据库表、增删改查外,还可以利用其进行建模创建数据库表。通过创建…

域名注册后还需要做什么?

在建立网站或在线业务时,域名注册是一个非常重要的步骤。但是,仅仅注册一个域名还不足以让您的网站或在线业务成功运营。在域名注册后,还需要进行一系列的步骤来确保您的网站能够正常运行,并吸引到访者。本文将介绍域名注册后的必…

人工智能的新时代:从模型到应用的转变

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Linux】记录一起网站劫持事件

故事很短,处理也简单。权当记录一下,各位安全大大们手下留情。 最近一位客户遇到官网被劫持的情况,想我们帮忙解决一下(本来不关我们的事,毕竟情面在这…还是无偿地协助一下),经过三四轮“谦让…

Conda修改默认环境创建路径

conda安装好后默认将新建环境安装在C盘 修改.condarc 配置文件 注 : Windows操作系统创建的 .condarc 文件通常在 C:\Users\User_name 这个目录下; 注 : Linux操作系统创建的 .condarc 文件通常在/home/User_name 这个目录下。 在.condarc文件中添加以下内容 有…