计算机网络 - 万字长文

news2024/11/15 23:36:49

计算机网络

  • 二、计算机网络
      • 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,保证数据的完整性,以及传输过程中可能发生的危险UDP TCP、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对比

对比项目 TCP UDP
是否面向连接
是否可靠
是否有状态
传输效率 较慢 较快
传输形式 字节流 数据报文段
协议 HTTP、HTTPS、FTP、 SMTP、POP3/IMAP、Telnet HDCP、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.coloradmin.cn/o/1909642.html

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

相关文章

昇思MindSpore学习入门-CELL与参数一

Cell作为神经网络构造的基础单元,与神经网络层(Layer)的概念相对应,对Tensor计算操作的抽象封装,能够更准确清晰地对神经网络结构进行表示。除了基础的Tensor计算流程定义外,神经网络层还包含了参数管理、状态管理等功能。而参数(…

【Python】已解决:(最新版selenium框架元素定位报错)NameError: name ‘By’ is not defined

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:(最新版selenium框架元素定位报错)NameError: name ‘By’ is not defined 一、分析问题背景 在使用Selenium进行Web自动化测试或爬虫开…

R包:‘patchwork合并多个R图的包‘

介绍 patchwork是基于gglot2的拼图包,它使得基于ggplot2的图形更容易拼接在同一个图层。 安装 因为作者仅仅在GitHub发布了patchwork,因此无法使用install.packages("patchwork")从CRAN处获取。为了获取该包,首先应该安装devtoo…

十进制与十六进制,和二进制的相互转变

十六进制与十进制 十六进制(Hexadecimal)是一种进位制,基数为16,常用于计算机科学和电子工程中。十六进制使用16个符号来表示数值:0-9表示0到9,A-F表示10到15。十六进制的每一位可以表示4位二进制数&#…

万界星空科技MES:磷酸铁锂正极新材料生产管理系统

磷酸铁锂MES通过对生产现场的数据进行实时采集、处理和监控,实现对生产过程的优化和控制。它可以实时监控生产设备的运行状态、物料的使用情况、产品的生产进度等信息,并根据这些信息对生产过程进行调整和优化。例如,当发现某个生产设备的故障…

电脑桌面日历记事本怎么弄 好用的桌面日历记事本

在这个数字化的时代,电脑已成为我们日常生活中不可或缺的伙伴。我常常在电脑上记录各种事项,以便随时查看和提醒自己。而我最钟爱的记事方式,莫过于使用桌面日历记事本。 想象一下,你的电脑桌面上有一个直观的日历,每…

【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch 1.历史发展2.OpenSearch 与 Elasticsearch 相同点3.OpenSearch 与 Elasticsearch 不同点3.1 版本大不同3.2 许可证不同3.3 社区不同3.4 功能不同3.5 安全性不同3.6 性能不同3.7 价格不同3.8 两者可相互导入 4…

【大模型】提示工程基础学习

目录 1. 零样本提示2. 少样本提示3. 链式思考提示(CoT)4. 自我一致性5. 生成知识提示6. 链式提示7. 思维树(ToT)8. 检索增强生成(RAG)9. active prompt10. 自我反思(reflexion)11. 多…

儿童网络守护计划:如何为孩子营造一个纯净的在线空间?

青少年不想被监视,但他们需要受到保护,免受互联网危险。我们告诉您如何与您的孩子建立信任,同时了解他们在网上面临的挑战。 对于今天的孩子来说,将离线和在线朋友分开是不可能的。青少年在任何时候都与一切事物和每个人联系在一起…

2024年道路运输企业主要负责人证考试题库及道路运输企业主要负责人试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年道路运输企业主要负责人证考试题库及道路运输企业主要负责人试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人…

MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

【Linux进阶】vim的用法

1.什么是vi/vim? 简单来说,vi是老式的文本编辑器,不过功能已经很齐全了,但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具,就连 vim的官方网站( http://www.vim.org)自己也说vim是一…

《无所不能的JavaScript · prototype 原型链》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,欢迎多多交流。&am…

掌握Midjourney:一份全面的使用教程

Midjourney 它是一种通过人工智能生成图片的人工智能绘画工具,如何使用Midjourney?很简单,只要在对话框中输入imagine 命令,添加您需要的图像描述或关键字,并在发送后生成相应的艺术图片。除了其强大的生图功能外&…

STM32CubeMX如何配置生成项目以及安装包

目录 一、STM32CubeMX介绍 二、用STM32CubeMX生成项目 1.创建项目 2.定义引脚 3.配置时钟 4.保存项目 5.生成项目 6.打开项目 一、STM32CubeMX介绍 STM32CubeMX是STM32Cube工具家族中的一员,专门为STM32微控制器的开发提供便利。它是一款图形化工具&#xf…

古代VS现代,太阳黑子的影响有什么变化?

公元前28年,我国汉朝人在人类历史上第一次记载下了“太阳黑子”。在《汉书五行志》里是这样记载:“汉成帝河平元年三月乙未,日出黄,有黑气,大如钱,居日中央”。在2052年前,人类对于太阳黑子的认…

基于考研题库小程序V2.0实现倒计时功能板块和超时判错功能

V2.0 需求沟通 需求分析 计时模块 3.1.1、功能描述←计时模块用于做题过程中对每一题的作答进行30秒倒计时,超时直接判错,同时将总用时显示在界面上;记录每次做题的总用时。 3.1.2、接口描述←与判定模块的接口为超时判定,若单题用时超过 …

【BUG】已解决:JsonMappingException

已解决:JsonMappingException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 概述: 没有getter方法的实体的序列化,并解决Jackson引发的JsonMappingException异常。 默认情况下,Jackson 2只会处理公有字段或具有公有get…

镭速助力全球高速传输,实现点对点高效传输打破时差壁垒!

在当今全球化的背景下,跨国界的文件协作已成为许多跨国企业日常工作的一部分。但是,时差和网络不稳定等因素常常影响团队间的有效交流与合作。特别是在大文件传输环节,传统的在线传输方法在接收方离线或网络条件不佳时显得力不从心&#xff0…

pycharm使用micropython

一、打开设置 2、搜索micropython、安装、重启 3、第5步需要设置成你插的电脑USB口,一个一个试 4、 5、 6、OK