【JavaEE初阶】TCP/IP协议(二)

news2024/11/18 3:36:11

文章目录

  • 网络层重点协议
    • IP协议
      • 地址管理
      • 路由选择
  • 数据链路层重点协议
    • 以太网协议
      • MTU
  • 应用层重要协议
    • DNS(域名解析系统)

网络层重点协议

IP协议

协议头格式如下:
在这里插入图片描述

  • 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。IPv6就是6.
  • 4位头部长度(header length):描述了IP报头多长。(IP报头是变长的)报头中有一个选项部分 是变长的。是可有可无的。 此处的单位也是四字节。
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留
    字段(必须置为0)。4位表示IP协议的四种形态/四种工作模式。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。
  • 16位总长度(total length):描述了一个IP数据包的长度(头+载荷)这个长度减去前面的IP报头长度就是载荷长度。一个完整的TCP/udp数据报长度。

如果一个IP数据报携带的数据载荷太长了,超过64kb,就会在网络层针对数据进行拆分。把一个数据拆分成多个IP数据报。再分别发送给接收方,再重新拼装。
接收方:数据链路层,针对两个数据帧进行分用,得到两个IP数据报,交给网络层,网络层针对这俩IP数据报进行解析,把里面的载荷拼成一个,交给传输层。

  • 16位标识(id):唯一的标识主机发送的报文。同一个数据拆成的多个包的标识是一样的。
  • 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第
    二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表
    示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。
  • 13位分片偏移(framegament offset):标识了多个包的先后顺序。是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
  • 8位生存时间(Time To Live,TTL):一个数据在网络上能够传输的最大时间。 这个时间的单位不是“秒”,而是“次数”。一个数据报构造出来,会有一个初识的TTL数值(比如32/64/128…)这个报每次经过一个路由器转发TTL-1. 如果一直减到0,还没有到达目标,此时就认为这个包永远也到不了。可以丢弃了。
  • 8位协议:描述了当前载荷部分内容是属于哪个协议的。(TCP/UDP)
  • 16位头部校验和:此处只需要针对首部进行校验,载荷部分(TCP/UDP数据报)自身已经有校验和了。如果校验和不一致 直接丢弃即可。
  • 32位源地址和32位目标地址:此处看到的IP地址是32位的整数。而我们日常见到的161.185.187.142是采用点分十进制表示的。(使用三个.把32位 4个字节的数字给分割开,分成四部分,每个部分分别使用0-255十进制整数表示。)

所谓地址,期望每个设备都不相同。但是 随着时代的发展,32位数字,只能表示42亿九千万个数字,即IP地址不够用。为了解决这个问题,有很多方法:

  1. 动态分配IP地址。

  2. NAT网络地址转换。本质上就是使用一个IP代表一批设备。
    在NAT背景下 将IP地址分为两个大类:
    (1)内网IP(私有IP)10.* 172.16.*-172.31.* 192.168.*
    (2)外网IP(公网IP)剩下的就是公网IP

    NAT要求,公网IP必须是唯一的,私网IP可以在不同局域网中重复出现。
    如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备(路由器),把IP地址进行映射,从而完成网络访问。
    反之,公网的设备,无法直接访问私网的设备。不同局域网的私网的设备没法直接相互访问。
    内网IP只要在局域网内部不重复即可,不同局域网中则是可以重复的。
    NAT机制能够有效的解决IP地址不够用的问题 但是使得网络环境更加复杂了。

  3. IPv6:从根本上解决了IP不够用的问题。使用16字节表示IP地址。

当前世界上 仍然是以NAT+Ipv4+动态分配来进行网络组建的。

地址管理

IP地址分为两个部分,网络号和主机号
网络号:标识网段,保证相互连接的两个网段具有不同的标识;
主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
即通常情况下:IP 192.168.0.10中:192.168.0为网络号10为主机号。
在这里插入图片描述
一个IP地址从哪到哪是网络号,从哪到哪是主机号,是由子网掩码来确定的。
在这里插入图片描述
1的部分就描述了IP有多少位是网络号。

路由选择

路由选择就是规划路径 相当于使用地图导航。
由于真实的网络环境非常复杂,任何一个节点(路由器)都是无法感知到网络环境的全貌的。一个路由器最多只认识他的一些邻居。如果要进行一个比较长的路径的转发,就比较麻烦。

数据链路层重点协议

考虑相邻节点之间的传输。(通过网线/光纤/无限直接相连的两个设备)

以太网协议

以太网帧格式:
在这里插入图片描述
以太网数据帧 = 帧头+载荷+帧尾
帧头:含有目的地址(mac地址(物理地址)),源地址, 类型。
载荷:完整的IP数据报。

IP和mac是如何相互配合的?
IP用来描述整个传输过程的起点终点,mac则是用来表述两个相邻节点的起点和终点。
在这里插入图片描述

这是数据链路层中另外的协议:ARP协议。
通过这个协议,让某个路由器/交换机,能够认识局域网中的其他设备。通过ARP协议会在交换机/路由器中建立一个表。这个表相当于一个hash表,能够建立出IP和mac之间的映射关系。

MTU

MTU是一个数据链路层的数据帧,它表示了能够承载数据的最大长度。(载荷的长度)
载荷具体多长,和使用的物理介质有很大关系。当然也和数据链路层使用的协议有很大的关系。比如以太网协议 MTU1500字节。
正式因为MTU引起了IP这个协议来进行分包组包。
IP的分包组包通常不是根据这个IP最大长度来分的。大概率情况下,数据链路层的MTU比64kb要小。

应用层重要协议

DNS(域名解析系统)

其实网络上的服务器,要访问它,需要的是, IP地址。但是IP地址太拗口,于是使用一些简单的单词构成字符串来表示这个地址。每个域名都对应了一个/N个IP地址。既然如此,就需要能够把域名和IP地址给对应上。
在早期的时候, 互联网上的服务器很少, 这域名和IP这样的映射关系只是使用一个hosts文件来维护, 每个用户只需要手动自己的hosts文件就可以了, 现在的电脑还是有这个文件的, 也可以使用.
在这里插入图片描述
后来互联网蓬勃发展, 到现在每天都有很多新的网站诞生, 此时想要依靠手机维护已经不现实了, 于是现在就有了DNS服务器来维护域名和IP的映射关系, 当你想要访问某个域名时, 就会自动请求DNS服务器, 然后就会返回具体IP地址进行访问.

如果电脑的DNS服务器配置不对, 或者是DNS服务器挂了, 就会出现一个典型的情况: 网络正常的情况下, QQ等应用程序可以用, 但是网页打不开了.

我们自己电脑的DNS服务器可以通过如下方式配置,

首先打开设置中 “网络和Internet” 中的 “高级网络设置” , 点击 “更多网络适配器器选项”.
在这里插入图片描述
这里可以自己去配置DNS服务器的地址。

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

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

相关文章

2023-6-28-第十一式代理模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

解读 RocketMQ 5.0 全新的高可用设计

作者:斜阳 高可用架构演进背景 在分布式系统中不可避免的会遇到网络故障,机器宕机,磁盘损坏等问题,为了向用户不中断且正确的提供服务,要求系统有一定的冗余与容错能力。RocketMQ 在日志,统计分析&#x…

Selenium系列(二) - 详细解读针对浏览器的操作

控制浏览器有哪些操作? 最大化、最小化浏览器控制、获取浏览器大小获取当前标签页title、url前进、后退、刷新执行js语句打开、关闭新标签页滚动页面 点击右边目录即可跳转哦! -------------->>>>>>>>>> 最大化、最小化…

从零开始 Spring Boot 51:JPA 中的默认列值

从零开始 Spring Boot 51:JPA 中的默认列值 图源:简书 (jianshu.com) JPA 是一个 ORM 框架,因此,通常我们需要在实体类中定义表结构,这其中就包含可能的字段默认值。 本文介绍如何在 Hibernate(JPA&#…

HBase(6):计数操作

1 需求 查看HBase中的ORDER_INFO表,一共有多少条记录。 2 count命令 count命令专门用来统计一个表中有多少条数据。语法: count 表名 注意:这个操作是比较耗时的。在数据量大的这个命令可能会运行很久,真实环境不要使用该命令。…

【从零开始学习JAVA | 第二十五篇】泛型

目录 前言: 泛型: 额外拓展: 总结: 前言: 本文将详细介绍之前我们在JAVA 中一直在讲的泛型,各位感兴趣的同学可以点击进来观看。 泛型: 泛型是一种编程概念,它允许在定义类、接…

文章测试

Markdown示例 本文件的源码是一个markdown文件,也就是说在本工程中直接添加markdown即可嵌入到sphinx文档中。 关于使sphinx支持markdown的详细配置说明,请参考文档markdown-sphinx。 markdown的公式语法在sphinx可能不支持。 以下是markdown的语法使用示例 文…

PDF如何转换成Word?PDF转Word方法分享!​

PDF大家都不陌生了吧?作为打工人,学生党的大家都知道,PDF是现在不可或缺的文件传输工具之一,不仅可将文档转为Word,还可以转成excel,ppt等各种形式,其重要性不言而喻,那么今天小编就跟大家具体说…

Web自动化元素定位之xpath定位详解

Web自动化常见的定位方式 为什么要学习定位 1.让程序操作指定元素,就必须先找到此元素 2.程序不像人类用眼睛直接定位到元素 webDriver提供了八种定位元素的方式 定位方式总结 1.id、name、class_name、tag_name:根据元素的标签或元素的属性来进行定位 2.link_t…

gitLab配置ssh实现私钥访问

1.配置ssh文件 1.cd C:\Users\用户名\.ssh 找到文件夹 删除.ssh 里面所有其他文件方面我们配置要最新的 2.win r cmd 呼出命令行 ssh-keygen -t rsa -C "必须对应gitLab用户名" 3.生成文件夹拿到ssh 4.复制id_rsa_pub 文件的全部字符串 公钥给到GitLab服务器 2.公…

使用 JavaScript 在没有插件的情况下输入文本掩码

文章目录 JavaScript 中信用卡号的输入掩码JavaScript 中的邮政编码输入掩码在 JavaScript 中使用括号输入掩码的电话号码为 JavaScript 中的不同字段自定义输入掩码 JavaScript 输入掩码或掩码文本框是一种控件,它为用户提供了一种简单可靠的方式来收集基于标准掩码…

【Servlet学习三】实现一个内存版本的简易计算器~

目录 一、方式1:使用form表单的形式(不推荐) 🌈1、前端代码:HTML文件 🌈2、后端代码:Calculator_form.java文件 🌈3、最终效果 二、方式2:使用ajax形式(…

力扣 105. 从前序与中序遍历序列构造二叉树

题目来源:https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/ C题解:前序遍历是中左右,中序遍历是左中右,所以拿到两个遍历数组,我们可以从前序遍历首节点获取中间…

Docker 私有仓库

一、私有仓库搭建 拉取私有仓库镜像 docker pull registry 启动私有仓库 docker run -id --nameprivate_registry -p 5000:5000 registry 打开浏览器输入 http://私有仓库服务器IP地址:5000/v2/_catalog 修改 daemon.json 文件 sudo gedit /etc/docker/daemon.json 在…

在Mapper.xml中写复杂的动态SQL语句

说明:在三层架构开发中,使用Mybatis框架操作数据库有两种方式,一种是在Mapper类里的方法上加注解(Select、Insert等),另一种是在Mapper.xml文件的标签内写SQL语句。第二种方式相比第一种,具有更…

electron webview 页面加载事件顺序

electron webview 页面加载事件顺序 1.did-start-loading 页面开始加载web 2.load-commit 主页面文档加载框架 3.page-title-updated titledom 4.dom-ready 主页面 dom 加载完成electron 5.load-commit frame文档加载.net 6.did-frame-finish-load frame 加载完成cdn 7.d…

Springboot钉钉免密登录集成(钉钉小程序和H5微应用)

欢迎访问我的个人博客:www.ifueen.com RT,因为业务需要把我们系统集成到钉钉里面一个小程序和一个H5应用,并且在钉钉平台上面实现无感登录,用户打开我们系统后不需要再输入密码即可登录进系统,查阅文档实际操作过之后记录一下过程…

HTML转EXE工具(HTML App Build)永久免费版

HTML转EXE工具(HTM2EXE)在CSDN上发布时间轴: 序号时间链接12022-08-17HTML转EXE工具(HTML App Build)初始版22023-02-18HTML转EXE工具(HTML App Build)最新版32023-06-23(实际未发布…

高德地图点聚合报错

最近做项目遇到这样一个玄学问题: 在写高德地图的时候加一个覆盖物 除了金华市其他城市覆盖并且不能点击,金华市内点击获取坐标点这样一个业务, 到这里都很正常,代码奉上 const AMap window.AMapconst state reactive({mapInp…

黑客进行网络欺骗攻击的手段有哪些?

网络欺骗主要方式有:IP 欺骗、ARP 欺骗、DNS 欺骗、Web 欺骗、电子邮件欺骗、源路由欺骗和地址欺骗等。其技术主要分为 HONEYPOT、分布式 HONEYPOT 和欺骗空间技术等。其中,源路由欺骗方式指通过指定路由,以假冒身份与其他主机进行合法通信或…