网络层协议—IP协议

网络层协议—IP协议

文章目录

  • 网络层协议—IP协议
      • 网络层简介
      • IP协议简介
      • IP协议文格式
      • IP协议报头
        • 实现网络互联的使用设备
      • 网段划分
      • IP地址划分
      • 子网掩码
      • IP地址的特点
      • 特殊的IP地址
      • IP地址的数量限制
      • 私有IP地址和公网IP地址
        • NAT技术
      • 路由
      • 报文的分片与组装
        • IP地址和硬件地址

网络层简介

网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,其主要作用是实现两个不同网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。网络层负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序。

image-20231007220645398

而IP协议就是网络层中的一个重要协议。

IP协议简介

IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

IP协议主要包含三方面内容:IP编址方案、分组封装格式以及分组转发规则。

IP协议文格式

image-20231007221202627

IP协议报文由报头和数据组成。由于IP位于网络层,而网络层是OSI参考模型的第三层,因此数据自顶向下做封装时,IP报文的数据部分必然包含上两层的报头和有效载荷。现对IP报头进行介绍。

IP协议报头

  • 四位版本号:指定IP数据报中使用的IP协议版本,占4位,IPv4对应值为4(0100)。
  • 4位首部长度:这与TCP的四位首部长度含义相同。四位范围为[0000,1111]即 [0,15](单位是字节)。四位首部长度=四位范围*4字节,因此四位首部长度范围为[0,60]。因为标准报头不包含选项内容,即标准报头大小为20字节,因此四位首部长度范围为[20,60]。
  • 8位服务类型(TOS):: 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0)。4位 TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本。这四者相互冲突, 只能选择一个。对于ssh/telnet这样的应用程序, 最小延时比较重要; 而对于ftp这样的程序, 最大吞吐量比较重要。
  • 16位总长度(total length): IP数据报整体占多少个字节。IP是固定长度报文,因此IP协议是面向数据报的。
  • 16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个 id都是相同的。
  • 3位标志字段: 第一位保留不用。第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文。第三位表示"更多分片", 如果分片了的话, 最后一个分片置为1, 其他是0,类似于一个结束标记。不同网络上的链路可以传输的最大报文大小是不同的,这就是我们通常说的MTU(最大传输单元)。尺寸较大的数据报在MTU值较小的网络链路传输需要将数据报分段依次传输,对应的接收方就需要把这些接收到的拆分的分段组合起来,还原成原来的数据报。
  • 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移,其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此, 除了最后一个报文之外, 其他报 文的长度必须是8的整数倍(否则报文就不连续了)。
  • 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数。一般是64,每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了。设定生存时间是为了防止数据报在网络中无限制地循环转发。
  • 8位协议: 表示上层协议的类型。通过该字段告诉接收方应该将报文交付给上层哪个协议。
  • 16位头部校验和: 用来检验IP数据报的包头部分(不含“数据”部分),在传输到接收端后是否发生了变化,占16位。因为数据报每经过一个路由器,路由器都要重新计算一下首部校验和。
  • 32位源地址和32位目标地址: 表示发送端和接收端的IP地址,各占32位。
  • 选项:用来支持各种选项,提供扩展余地,可用来支持排错、测量以及安全等措施。
实现网络互联的使用设备
  • 物理层使用的中间设备叫转发器(repeater)。
  • 数据链路层使用的中间设备叫做网桥或者桥接器(bridge)。
  • 网络层使用的中间设备叫做路由器(router)。
  • 在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议转换。

本文主要介绍的是网络层,那么介绍的使用设备是路由器。

image-20231010181506032

网段划分

须知:

  • 主机 : 配有IP地址, 但不能进行路由控制的设备。
  • 路由器 : 既配有IP地址, 又能进行路由控制。
  • 节点 : 主机和路由器的统称。

IP地址分为两个部分,网络号和主机号

  • 网络号:保证相互连接的两个网段具有不同的标识。(网段:一段范围内的IP,网络号相同的IP处于同一个网段。)
  • 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号。
  • 子网:IP 地址是以网络号和主机号来表示网络上的主机的, 只有在一个网络号下的计算机之间才能“直接”互通, 不同网络号的计算机要通过网关(Gateway)才能互通。但这样的划分在大多数情况下显得并不十分灵活。为此IP网络还允许划分成更小的网络, 称为子网(Subnet)。
  • 不同的子网其实就是把网络号相同的主机放到一起。
  • 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复。在不同的子网主机号可以相同。

image-20231008184017296

通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同。

而IP地址这么多,在子网中管理IP地址就成了非常复杂的事情。因此孕育出了DHCP技术。

  • DHCP 动态主机配置协议 :首先,这是一个应用层协议,可以自动给子网内新增的主机节点分配IP地址 。一般的路由器都带有DHCP功能, 因此路由器也可以看做是一个DHCP服务器。

IP地址划分

在过去曾提出一个划分IP地址的方案,将所有的IP地址划分为五类。

image-20231008190204064

  • A类从0.0.0.0到127.255.255.255
  • B类从128.0.0.0到191.255.255.255
  • C类从192.0.0.0到223.255.255.255
  • D类从224.0.0.0到239.255.255.255
  • E类从240.0.0.0到247.255.255.255

随着互联网的发展,这种划分方案的局限性逐渐被扩大。大多数组织会申请B类网络地址。导致B类网络地址很快被分配完,而A类缺浪费了大量地址。B类的一个子网能够容纳6w多个主机号,在生活中使用较为合理。而A类的一个子网可以容纳1千6百多万主机,在实际的网络架设中, 不会存在一个子网内有这么多主机的情况,因此大量的IP地址都被浪费掉了。

针对这种情况就有人提出了新的划分方案,称为CIDR(Classless Interdomain Routing)即子网掩码。

子网掩码

  • 通过子网掩码对IP地址进行封装,区分出网络号和主机号。
  • 子网掩码也是一个32位的正整数,通常用一串 “0” 来结尾。
  • 将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号。
  • 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关。

举个例子

image-20231008192730311

  • 可见,IP地址与子网掩码做与运算可以得到网络号, 主机号从全0到全1就是子网的地址范围。
  • IP地址和子网掩码还有另一种表示形式。例如:140.252.20.68/24。表示该IP地址的高24位为全1,即子网掩码为255.255.255.0,网络号为140.252.20,主机号为68。

IP地址的特点

  1. IP 地址是一种分等级的地址结构
  • IP 地址管理机构在分配 IP 地址时只分配网络号,依托子网掩码,剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
  • 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
  1. 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口
  • 当一个主机同时能够连接到两个网络时,该主机必须同时具备两个相应的IP地址,其网络号是不同的,这种主机称为多接口主机。
  • 由于一个路由器应当将IP数据报从一个网络转发到另一个网络,因此路由器需要同时连接到两个网络,所以路由器至少应当具备两个不相同的IP地址。
  1. 用转发器或网桥连接起来的若干个网络仍是一个网络
  • 转发器之所以能够转发IP数据报,是因为他同时具备IP数据报的源IP,和目的IP。而处在同一个网络中主机之间才能“直接”通信,因此转发器必然与目的IP的主机或路由器处在同一个网络。
  1. 所有的网络都是平等的。

特殊的IP地址

  1. IP地址中的主机号全为0,就成了网络号,代表这个局域网。
  2. 将IP地址中的主机号的二进制全部设为1,就成为了广播地址。用于给同一个链路中相互连接的所有主机发送数据包。
    1. *的IP地址用于本地环回测试。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。所以通常在安装物理网卡前就可以ping通这个本地回环地址。 一般都会用来检查本地网络协议、基本数据接口等是否正常的。通常使用127.0.0.1。

IP地址的数量限制

IP地址(IPv4)是一个4字节32位的正整数,那么一共只有2的32次方个IP地址, 大概是43亿左右。而TCP/IP 协议规定, 每个主机都需要有一个IP地址。

实际上由于一些特殊的IP地址的存在,我们的可使用IP数量远远不及43亿。并且IP地址并非是按照主机划分,而是一张网卡需要配置一个或多个IP地址。

CIDR在一定程度上提高了IP地址的使用率,减少了浪费,但实际上IP地址的绝对上限并没有增加,仍然是不够用的。此时有人提出了三种方式来解决:

  • 动态分配IP地址: 只给接入网络的设备分配IP地址,设备断开网后IP地址还回给路由器。因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的。
  • IPv6并不是IPv4的升级版,这是互不相干的两个协议, 彼此并不兼容。IPv6的源IP和目的IP都是128位即用16字节128位来表示一个IP地址,但是目前IPV6还没有普及。
  • NAT技术。

私有IP地址和公网IP地址

  • 私有IP地址只用于局域网内的“直接”通信,而不是“直接”连到因特网上。RFC1918规定了用于组建局域网的私有IP地址。
  • 10.*,前8位是网络号,共16,777,216个地址。
  • 172.16*到172.31 *,前12位是网络号,共1,048,576个地址。
  • 192.168.*,前16位是网络号,共65,536个地址。在这个范围中的IP地址都成为私有IP, 其余的则称为全局IP(或公网IP)。

image-20231009114005442

NAT技术
  • 一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP)。对内(子网)使用LAN口,对外使用WAN口。
  • 路由器LAN口连接的主机, 都从属于当前这个路由器的子网中。
  • 不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复。位于不同的子网其主机IP地址可以重复。
  • 在中国网络的基建是由运营商搭建的,因此每一个家用路由器, 可以作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会存在很多级, 最外层的就是运营商路由器, WAN口IP就是一个公网IP了。
  • 子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP,这种技术称为NAT(Network Address Translation,网络地址转换)。
  • 因此如果希望我们自己实现的服务器程序, 能够在公网上被访问到,就需要把程序部署在一台具有公网IP的服务器上。

总结一下:

通常我们使用的是内网IP即源IP是内网IP,而目的IP是公网IP。我们向公网IP发送请求。此时服务器面对的是一个内网IP,而内网IP是可以重复的,因此服务器就不知道将响应发给谁。

因此实际上我们发送的报文会通过路由器。路由器会将报文的源IP(内网IP)转换为wan口IP,然后继续向服务器发送,经过多个路由器的wan口IP转换后,服务器拿到的就是公网IP了。其中LAN口IP转化换为WAN口IP的技术就是NAP技术。

一个IP报文被发出,经过一个个路由器时,IP地址会不断发生改变。是由于进入或出去路由器的网络时IP地址会与子网掩码进行计算。其中IP报文越靠近目的IP,其路径上的路由器的子网掩码位数越来越多,IP地址能操作的主机号位数越来越少,即IP报文的定位越靠近IP主机,直到IP主机收到IP报文。

路由

从名字来听可以认为路由具有在复杂的网络结构中, 找出一条通往终点的路线。

而路由的过程,就是“一跳一跳”(Hop by Hop)“问路”的过程。

  • 一跳是指数据链路层中的一个区间,具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。
  • 问路是指在路由器的路由表中检索出可能符合IP报文的目的IP的子网。

IP数据包的传输过程

  • 当IP数据包, 到达路由器时, 路由器会先查看目的IP。
  • 路由器根据路由表中的目的地址栏目,决定是直接将数据包发送给目的IP,还是发送给下一个路由器。
  • 如果目的IP存在于路由表中,路由器会将报文直接发送给目标主机或转发给下一个路由器。
  • 当目的IP与路由表中的地址都不匹配时,路由器会将数据包转发给默认目的IP。
  • 重复这个过程, 一直到达目标主机(或者TTL为0时被丢弃);

路由表可以通过route查看

image-20231010161457284

以下面路由表为例

image-20231010163927811

  • Destination是当前路由器可以将IP数据包能够发送到的目的IP。其中有默认网关(default)。
  • Geteway是下一跳地址。若IP数据包没有命中路由表,则将数据包发送给默认下一条地址192.168.10.1。
  • Gemask是子网掩码。
  • Flags是标志位,Flags中的U标志表示此条目有效(可以禁用某些条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发;
  • Iface是发送接口,报文需要通过该接口发出。
  • 度量值(metric):度量值用于表示每条可能路由的代价,度量值最小的路由就是最佳路由。

例如路由器收到的IP报文的目的IP是192.168.10.33。该目的IP与第一行的子网掩码运算后得到192.168.10.0。与第一行的目的地址相符合,因此就通过eth0接口将报文发送给目的地址的网关。

若路由器收到的IP报文的目的地址是192.168.45.33。该目的IP与子网掩码运算后得到192.168.45.0,其网络号都没有命中路由表中的目的地址,路由器就会将该IP报文转发给默认网关(default)192.168.10.1。

实际上查找目的IP是先查找他所归属的子网,报文经过路由器转发后进入子网,IP报文的网络号部分也由公网IP转换为子网IP,然后路由器根据转换后的IP将报文发送给目的主机。

报文的分片与组装

再次分析IP报头结构

image-20231007221202627

16位标识:标识IP报文的唯一性。如果一个IP报文在数据链路层被分片了,那么每一片的这个字段都是一样的。

3位标志:第一位被弃用。第二位为0说明该报文允许被分片,第二位为1说明该报文禁止被分片,若该报文长度超过MTU(在数据链路层具有MAC帧协议,MAC帧协议规定自己的有效载荷大小不能超过一定字节—MTU大小,这里假定MTU大小为1500字节),那么该报文就要被丢弃。如果分片了,标志位第三位为0,标识IP报文的结尾,其余分片为1。

13位片偏移:分片相对于原始IP报文起始的偏移量,标识该分片位于IP报文的位置,实际上分片偏移量=该13位偏移*8。因此除了最后一个分片,其余分片的该字段都为8的整数倍。

image-20231010174335647

  • 若IP报文大小大于MTU且三位标志的第二位为为0,那么该报文就会在源IP地址的网络层被分片,在目的IP的网络层被组装。而IP报文的分片和组装是为了迎合数据链路层MAC帧的大小,因此数据链路层并不关系IP报文是否被分片,同样的在网络层之上的传输层、应用层也不关心。
  • IP报文被分片时,是会根据IP报头给每一个分片报文进行加装报头。

image-20231010175921101

  • 当前分片报文的起始地址+自身报文长度=下一个分片报文的起始地址。即可以根据分片报文的13位偏移量得知分片报文在原始报文的顺序。且根据13位偏移量就能够对分片报文按序组装。

  • 分片的三位标志位第三位为1说明该报文为分片报文。若分片的三位标志位第三位为0且13位偏移量>0说明该报文即是分片报文又是末尾报文。

  • 可以根据报文的16位标识得知哪些报文是同一个报文的分片。

  • 将分片报文组装好后,在网络层IP协议会对报文的报头进行16位首部校验和验证。且报文去到控制传输层TCP协议也会对报文的报头进行校验和验证。

但IP报文分片与组装,不是主流情况。分片报文丢失一份,源IP就需要重传一整份IP报文,大大增加了丢包率。

IP地址和硬件地址

IP地址

  • IP 地址是一种逻辑地址。
  • IP 地址称为逻辑地址,是因为IP地址是用软件实现的。
  • IP 地址是网络层及其以上各层(包括运输层、应用层等)使用的地址。
  • IP 地址放在 IP 数据报的首部。

硬件地址

  • 硬件地址是一种物理地址。
  • 硬件地址称为物理地址,是因为硬件地址是用硬件实现的。
  • 硬件地址是数据链路层和物理层使用的地址。
  • 硬件地址放在 MAC 帧的首部。

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

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

相关文章

Spring 统一处理(JavaEE进阶系列6)

目录 前言: 1.用户登录权限的校验 2.Spring拦截器 2.1自定义拦截器 2.2将自定义拦截器加入到系统配置 2.3拦截器练习 2.4拦截器的实现原理 3.统一异常处理 4.统一数据的返回格式 结束语: 前言: 接下来就是Spring Boot中的统一功能…

对于使用win32 API获取性能计数器的理解

微软提供了获取性能计数器的接口,如下 LSTATUS RegQueryValueExA([in] HKEY hKey,[in, optional] LPCSTR lpValueName,LPDWORD lpReserved,[out, optional] LPDWORD lpType,[out, optional] LPBYTE lpData,[in, out, optional] L…

mysql面试题30:什么是数据库连接池、应用程序和数据库建立连接的过程、为什么需要数据库连接池、你知道哪些数据库连接池

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是数据库连接池? 数据库连接池是一种用于管理和复用数据库连接的技术。它是在应用程序和数据库之间建立一组数据库连接,并以池的形式存储起…

Kubernetes革命:云原生时代的应用编排和自动化

文章目录 什么是Kubernetes以及为何它备受欢迎?云原生应用和K8s的关系Kubernetes的核心概念:Pods、Services、ReplicaSets等部署、扩展和管理应用程序的自动化容器编排的演进:Docker到Kubernetes实际用例:企业如何受益于K8s的应用…

winform窗体控件太多显示不过来,怎么实现滚动条

winform窗体控件太多显示不过来,怎么实现滚动条 Winform Panel实现滚动条 一、创建panel 在界面上拖拽一个父级Panel1,然后在Panel1里面拖拽一个子级Panel2 设置父级Panel1的AutoScroll属性为True 属性设置好后,当子级高度或者宽度大于父…

LED灯实验--汇编

asm-led.S .text .global _start _start: /* 1. led灯的初始化 *//* 1.1 使能GPIOE、DPIOF外设控制器的时钟 */ldr r0, 0x50000A28ldr r1, [r0]orr r1, r1, #(0x3 << 4)str r1, [r0]/* 1.2 设置PE10、PE8、PF10引脚为输出模式 */ldr r0, 0x50006000ldr r1, [r0]bic r1,…

jenkins工具系列 —— 插件 使用Changelog获取commit记录

文章目录 安装changelog插件重启jenkins配置 ChangelogExecute shell 使用 changelog邮件中html格式也可以使用构建测试&#xff08;查看构建项 -> 控制台输出&#xff09; 安装changelog插件 插件文件可通过 V 获取 点击 左侧的 Manage Jenkins —> Plugins ——> …

虹科方案 | 汽车CAN/LIN总线数据采集解决方案

全文导读&#xff1a;现代汽车配备了复杂的电子系统&#xff0c;CAN和LIN总线已成为这些系统之间实现通信的标准协议&#xff0c;为了开发和优化汽车的电子功能&#xff0c;汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备&#xff0c;虹科提供了一种高效、…

基于SSM的个人博客系统

实现内容 本系统为用户提供实现了以下功能&#xff1a; 1.登录功能&#xff1a; 系统为单用户系统&#xff0c;为用户分配了用户名和密码。用户必须先登录&#xff0c;进入操作界面。用户输入ID和密码&#xff0c;通过服务器验证方可运行&#xff0c;否则显示消息提示。 2.…

鸿蒙手表开发之使用adb命令安装线上包

#国庆发生的那些事儿# 鸿蒙手表开发之使用adb命令安装线上包 前言&#xff1a; 由于之前的哥们匆忙离职了&#xff0c;所以鸿蒙手表项目的新版本我临时接过来打包发布&#xff0c;基本上之前没有啥鸿蒙经验&#xff0c;但是一直是做Android开发的&#xff0c;在工作人员的指…

6款流程图制作软件:一站式指南

流程图是一种常用的图示工具&#xff0c;可以帮助我们更清晰地表达和展示流程、流程图等内容。在今天已经变得非常普及和便捷&#xff0c;接下来本文将于大家分享6款好用的流程图软件&#xff0c;一起来看看吧&#xff01; 博思白板boardmix 博思白板boardmix是一款基于浏览器…

使用gpio子系统实现按键驱动(二)

一&#xff0c;gpio_keys.c介绍 Linux内核下的drivers/input/keyboard/gpio_keys.c实现了一个体系无关的GPIO按键驱动&#xff0c;使用此按键驱动&#xff0c;只需要在设备树gpio-key节点添加需要的按键子节点即可&#xff0c;适合于实现独立式按键驱动。 gpio-keys是基于inp…

关于ABB速度,加速度,轴监控指令

关于ABB速度&#xff0c;加速度&#xff0c;轴监控 关于轴监控指令要选择启用和关闭&#xff0c;这个指令是为了防止机器人在抓件放件过程中6轴来回旋转&#xff0c;已最佳的姿态运动 收录于合集 #ABB机器人 9个 上一篇关于ABB机器人的IO创建和设置

嵌入式养成计划-38----C++--匿名对象--友元--常成员函数和常对象--运算符重载

八十七、匿名对象 概念&#xff1a;没有名字对象格式 &#xff1a;类名&#xff08;&#xff09;;作用 用匿名对象给有名对象初始化的用匿名对象给对象数组初始化的匿名对象作为函数实参使用 示例 : #include <iostream> using namespace std; class Dog { private:s…

微电网单台并网逆变器PQ控制matlab仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 微电网运行在并网模式下且公共电网供应正常时&#xff0c;因为公共电网给定了电 压和频率的参考值&#xff0c;所有的逆变器可以使用PQ控制方式。 当系统频率为额定频率f0时&#xff0c;系统稳定在A点&#x…

awvs 中低危漏洞

低危 X-Frame-Options Header未配置 查看请求头中是否存在X-Frame-Options Header字段 会话Cookie中缺少secure属性(未设置安全标志的Cookie) 当cookie设置为Secure标志时&#xff0c;它指示浏览器只能通过安全SSL/TLS通道访问cookie。 未设置HttpOnly标志的Cookie 当cookie设置…

终于找到了!多种类型的电子期刊模板在这里!

经过我不懈的努力和搜寻&#xff0c;终于找到了一个提供多种类型电子期刊模板的网站。这个网站拥有丰富多样的模板&#xff0c;可以满足各种不同的需求&#xff0c;无论是学术研究、商业报告还是个人兴趣爱好&#xff0c;都能在这里找到心仪的模板。 一、网站介绍 这个网站叫做…

软件行业与就业(导师主讲)

在企业软件应用的整体架构体系中&#xff0c;有一部分被称为中间件&#xff0c;那么什么叫中间件&#xff1f; 中间件&#xff08;Middleware&#xff09;是指位于操作系统和应用程序之间的一层软件层&#xff0c;它提供了一组工具和服务&#xff0c;用于简化和增强企业软件应用…

关于hive的时间戳

unix_timestamp&#xff08;&#xff09;和 from_unixtime&#xff08;&#xff09;的2个都是格林威治时间 北京时间 格林威治时间8 from_unixtme 是可以进行自动时区转换的 (4.0新特性) 4.0之前可以通过from_utc_timestamp进行查询 如果时间戳为小数&#xff0c;是秒&#…

Java基本数据类型

Java基本数据类型 1 数值型 整型数据类型 数据类型内存空间&#xff08;8位1字节&#xff09;取值范围byte(字节型&#xff09;8位&#xff08;1字节&#xff09;-128~127 &#xff08;2的8次方&#xff09;short(短整型&#xff09;16位&#xff08;2字节&#xff09;-32768~3…