计算机网络 - 万字长文

计算机网络

  • 二、计算机网络
      • 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) -…

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

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

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

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

OpenGL3.3_C++_Windows(28)

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

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…

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…

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文件中添加以下内容 有…

SpringBoot整合MongoDB文档相关操作

文章目录 SpringBoot整合MongoDB文档操作添加文档查询文档更新文档删除文档 SpringBoot整合MongoDB 创建项目&#xff0c;添加依赖&#xff0c;配置连接 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-dat…

Python 数据容器的对比

五类数据容器 列表&#xff0c;元组&#xff0c;字符串&#xff0c;集合&#xff0c;字典 是否能下标索引 支持&#xff1a;列表&#xff0c;元组&#xff0c;字符串 不支持&#xff1a;集合&#xff0c;字典 是否能放重复元素 是&#xff1a;列表&#xff0c;元组&#…

遥感分类产品精度验证之TIF验证TIF

KKB_2020.tif KKB_2020_JRC.tif kkb.geojson 所用到的包&#xff1a;&#xff08;我嫌geopandas安装太麻烦colab做的。。 import rasterio import geopandas as gpd import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.metrics import c…

【零基础】学JS之APIS(基于黑马)

喝下这碗鸡汤 披盔戴甲,一路勇往直前! 1. 什么是事件 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 2. 什么是事件监听? 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为 注…

如何用java语言开发一套数字化产科系统 数字化产科管理平台源码

如何用java语言开发一套数字化产科系统 数字化产科管理平台源码 要使用Java语言来开发一个数字化产科系统&#xff0c;你需要遵循一系列步骤&#xff0c;从环境搭建到系统设计与开发&#xff0c;再到测试与部署。 以下是一个大致的开发流程概览&#xff1a; 1. 环境搭建 Jav…

从Docker 网络看IaC

【引子】近来&#xff0c;老码农又一次有机会实施IaC 了&#xff0c; 但是环境有了新的变化&#xff0c;涵盖了云环境、虚拟机、K8S 以及Docker&#xff0c;而网络自动化则是IaC中的重要组成&#xff0c;温故知新&#xff0c;面向Docker 的网络是怎样的呢&#xff1f; Docker …

C++相关概念和易错语法(16)(list)

1.list易错点 &#xff08;1&#xff09;慎用list的sort&#xff0c;list的排序比vector慢得多&#xff0c;尽管两者时间复杂度一样&#xff0c;甚至不如先把list转为vector&#xff0c;用vector排完序后再转为list &#xff08;2&#xff09;splice是剪切链表&#xff0c;将…

指数增长远大于nlgn

在学习算法导论的时候&#xff0c;遇到了这么一行字把我难住了。我不理解为什么叶节点代价总和就为Ω(nlgn)了&#xff0c;后来经过学习之后了解了&#xff0c;因为n的指数严格大于1&#xff0c;只要指数函数的指数大于1就是指数增长&#xff0c;那么就远大于nlgn。