网站验证码怎么做,深圳工业设计中心,像淘宝类别网站怎么做,医疗网站被黑后可以做排名IP: 提供一种能力,将数据从A主机送到B主机的能力,但不一定会成功 主机 : 配有 IP 地址 , 但是不进行路由控制的设备 ; 路由器: 即配有 IP 地址 , 又能进行路由控制 ; 节点 : 主机和路由器的统称; 协议头格式 如何封装和解包: 定长报头 自描述字段 如何交付(分用) : 8… IP: 提供一种能力,将数据从A主机送到B主机的能力,但不一定会成功 主机 : 配有 IP 地址 , 但是不进行路由控制的设备 ; 路由器: 即配有 IP 地址 , 又能进行路由控制 ; 节点 : 主机和路由器的统称;
协议头格式 如何封装和解包: 定长报头 自描述字段 如何交付(分用) : 8位协议(udp或tcp) 第一层 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 4位头部长度(header length): 4为首部长度虽然是4个bit位,但是单位是字节0000-1111 0 - 15,即范围是0 - 60字节报头的范围: [20,60] x * 4 20 推出 x 5-0101x * 4 60 推出 x 15-11118位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段(a.最小延时, b.最大吞吐量, c.最高可靠性, d.最小成本)1位保留字段(必须置为0) 16位总长度(total length): IP数据报整体占多少个字节
第三层
8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL- 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环8位协议: 表示上层协议的类型 (udp或者tcp) 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏. 32位源地址和32位目标地址: 表示发送端和接收端.
第二层 分片问题 网络层的下层链路层由于物理特征的原因,一般无法发生太大的数据这时发送端的网络层就会把数据进行分片然后发送,而接收端的网络层就会进行组装 将一个比较大的ip报文,拆分成为多个小的满足条件的报文, 分片的行为是网络做的,同样组装的行为也必须由对方的网络层来做 网络向上交付也必须是一个完整的报文,IP分片和组装的行为,TCP是不知道的,不关心的
如何实现分片 16位标识: IP报文序号3位标志: 第一位 保留 (保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为 1表示禁止分片 , 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示 更多分片 , 如果分片了的话,最后一个分片置为1, 其他是0(结束标记) 13位片偏移: 是分片相对于原始IP报文开始处的偏移(确认位置) 区分分片并确认收全-提供组装方案 分片行为不是主流 在网络层分片和组装中,丢包是有概率的,分片会增加丢包的概率识别报文与报文的不同 不同报文的16位标识不同,这就能区分报文和报文之间的不同,识别报文是否被分片 如果更多分片标志位是1,就表明它被分片了如果我就是最后一个分片,但这个更多分片标志位就是0,无法区分是否被分片了 但是最后一个分片的13位片偏移,一定不为0,能区分是否被分片了 if(报文-更多分片 0x1) return 分片的 else if(报文-片偏移 0) return 分片的 else return 独立的报文识别那些分片是开始,中间,结尾 开始: 更多分片1,片偏移0中间: 更多分片1,片偏移不是0结尾: 更多分片0,片偏移不是0识别任何一个分片丢失 通过16位标识,确定这个报文的所有分片,并将其放在一起然后按照片偏移进行升序排列偏移量 自身大小 下一个报文的偏移量扫描整个报文如果不匹配,中间就一定会有丢失的, 如果成功计算到结尾,就一定收取完整了(组装时也是这样做的) 分片之前,一定是一个独立的ip报文分片之后,每一个分片都要有ip报文,为了支持未来的组装,每一个分片都必须有ip报文 网段划分(重要) ip 网络号主机号
网络号: 保证相互连接的两个网段具有不同的标识; 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号; 通过 合理设置 主机号和网络号 , 就可以保证在相互连接的网络中 , 每台主机的 IP 地址都不相同 . 那么问题来了 , 手动管理子网内的 IP, 是一个相当麻烦的事情 . 有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器.
过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示(该图出 自[TCPIP])。 A类 0.0.0.0到127.255.255.255B类 128.0.0.0到191.255.255.255C类 192.0.0.0到223.255.255.255D类 224.0.0.0到239.255.255.255E类 240.0.0.0到247.255.255.255 随着 Internet 的飞速发展 , 这种划分方案的局限性很快显现出来 , 大多数组织都申请 B 类网络地址 , 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址 例如, 申请了一个B类地址, 理论上一个子网内能允许6万5千多个主机. A类地址的子网内的主机数更多.然而实际网络架设中, 不会存在一个子网内有这么多的情况. 因此大量的IP地址都被浪费掉了.
针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing): 引入一个额外的 子网掩码 (subnet mask)来区分网络号和主机号; 子网掩码也是一个32位的正整数. 通常用一串 0 来结尾; 将IP地址和子网掩码进行 按位与 操作, 得到的结果就是网络号; 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关; 可以给不同的路由器配置不同位数的子网掩码,就能看到不同的网络号目的IP 当前路由器的子网掩码 该报文要去的目的网络又因为不同的路由器一定至少要级联2个网络,每一个网络的网络号可能是不同的 每一个路由器都要给自己直接链接的网络配置对应的子网掩码
特殊的IP地址 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网; 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包; 127.*的IP地址用于 本机环回(loop back)测试 ,通常是127.0.0.1
IP地址的数量限制
我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方个IP地址, 大概是43亿左右. 而TCP/IP 协议规定, 每个主机都需要有一个IP地址. 且还有一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡 都需要配置一个或多个IP地址. CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用.
这时候有三种方式来解决 动态分配IP地址 : 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的; NAT技术 (后面会重点介绍); IPv6 : IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表 示一个IP地址; 但是目前IPv6还没有普及;
私有IP地址和公网IP地址 路由器天然的会构建区域网(子网),内网IP,家用路由器: 对内: 面对自己构建的子网对外:自己本身也是别人构建子网的一个主机所有路由器一定要有两套地址: 对内: Lan口IP,局域网ip(私有ip)对外:WAN口IP,自己所在上级子网给自己分配的ip(公有ip)私有网络对应的IP是局部的,可以在不同的子网中重复出现-IP不足问题就大大缓解了 缓解IP不足-NAT技术 路由器要做的一个事情:
将报文中的源IP替换成为路由器的WAN口IP每经过一个运行商的内网路由器,都要做这个工作(公网路由器不做) 目的IP地址是不变的,源IP地址在不同的内网,通过不同层级的网络节点中转发(替换), 这种技术就叫做: NAT技术
路由 IP报文,被千里送到主机C的入口路由器,接下来需要进行交付给目标主机: 封装MAC报头,所以就必须知道主机C的MAC地址 IP提供的是转发的策略,想要解决设备转发的具体功能,需要交给数据链路层解决
数据链路层
1.以太网帧格式-数据帧格式 源地址和目的地址是指 网卡 的 硬件地址 (也叫 MAC地址 ), 长度是48位,是在网卡出厂时固化的; 帧协议类型字段有三种值,分别对应IP、ARP、RARP; 帧末尾是 CRC校验码 -标识主机 唯一性 的方案 认识 MAC 地址 MAC地址用来识别数据链路层中相连的节点; 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19) 在网卡出厂时就确定了, 不能修改. mac地址通常是 唯一 的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
对比理解MAC地址和IP地址 IP地址描述的是 路途总体 的 起点 和 终点; MAC地址描述的是路途上的 每一个区间 的起点和终点;
2.重谈局域网通信原理 局域网中的主机是越少越好,且发送数据帧的时候,数据帧越短越好 这样就能有效的减少数据之间的碰撞碰撞避免算法-发送的主机会休息随机时间,然后,在重新发送局域网攻击原理.....
认识MTU
MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制. 以太网帧中的数据长度规定最小46字节,最大1500字节, ARP数据包的长度不够46字节,要在后面补填充位; 最大值1500称以太网的最大传输单元(MTU), 不同的网络类型 有 不同的MTU ; 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation); 不同的数据链路层 标准的 MTU是不同的 ; 3.汇总到整体的通信流程汇总,发现问题--添补细节 在网络转发的过程中,目的IP不变的,mac帧报头要变
MSS和MTU的关系 TCP的单个数据报的 最大消息长度 , 称为MSS(Max Segment Size); MTU的最大字节为1500 IPIP有效载荷 1500 - IP报头(20) TCP 数据 1480数据 1480 - TCP报头的长度(20) 1460,即MSS不能大于1460
查看硬件地址和MTU ARP协议(地址解析协议) 如果只知道目标主机的IP地址,而不知道对方的MAC地址,就无法封装MAC帧在一个网段中,通过目标IP,得知对方MAC地址的方式叫做-ARP协议(地址解析协议)
ARP数据报的格式 硬件类型指链路层网络类型,1为以太网;协议类型指要转换的地址类型,0x0800为IP地址;硬件地址长度对于以太网地址为6字节;协议地址长度对于和IP地址为4字节;op字段为1表示ARP请求,op字段为2表示ARP应答
模拟一次ARP过程 前提是知道对方的IP地址 HA会给在这局域网中所有的主机都发送ARP请求(全广播)每一主机拿到这个请求,都会先看自己的IP地址是否匹配目的IP地址,都会处理,并向上交付不匹配就直接丢弃,匹配就发送ARP应答给对应主机 HD这台主机会给HA主机发送ARP应答,在APR应答中就包括了HD自己的MAC地址 当然在这个局域网中其他的主机都会收到这个应答,但是不会处理,会直接丢弃 问题一: 如何理解上诉过程发生的两次丢弃
一次是在arp层丢弃的,一次是在底层mac层丢弃的
问题二: ,是不是每一次发送数据都要发送一个arp请求和一个arp应答
不是,arp请求成功之后,请求方会暂时将IP : MAC地址的映射暂时保存下来
问题三: 除了在目标最终的子网中进行arp,其他地方会不会也发生arp呢
会,arp过程会在网络中可能的所有路径中出现
小结 任何主机可能之前向目标主机发起过ARP请求,同时,未来一定会受到对应的ARP应答 任何一台主机,也有可能被别人发起ARP请求 在局域网中:任何一台主机受到ARP的时候,可能是一个应答,也可能是一个请求 arp伪装 DNS(Domain Name System)
TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆. 于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.
最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的 如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件. 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网.
这样就太麻烦了, 于是产生了DNS系统
一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系. 如果新计算机接入网络, 将这个信息注册到数据库中; 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址. 遗留问题: 浏览器中输入url后,发生的事情 NAT的转换表 其实在进行源地址替换的过程中,可能不一定只替换原IP,必要的时候,源端口也要被替换路由器在NAT转换的过程中,除了单纯的替换,还会为我们根据报文请求的四源组 为我们构建一个映射关系源IP表示唯一的一台主机,源端口表示该主机上唯一的一个进程源IP源端口表示唯一的一个进程 -- 自己在自己的内网中的唯一性无论从内向外,还是从外向内,都能在各自的网络中表示唯一性, 所以这个映射关系是:互为KEY值的!! 如果我们从来没有访问过外网,外网能够直接访问内网吗? 理论上不能 但是有很多基于NAT原理的软件,能够帮助我们进行从外网访问内网 -- 内网穿透
正向代理服务器 正向代理是双向的,即请求和应答都会通过这个代理服务器 反向代理服务器 反向代理是单向的,且一般用于公司大型机房中,主要为了提高服务器的利用率,将大量的请求通过代理服务器平均分配给所有主机,以提高效率 访问外网 - fq 在国内有的服务器是可以直接访问外网的,这种代理叫做正向代理把要访问的IP(真实IP)用另一个IP(代理服务器IP)嵌套一层,并加密处理从国内发送给运营商,运营商拿到这个报文,一看IP是国内的IP(代理服务器IP)就通过了 (运营商没有密钥无法解密,就无法看到我们真实想访问的IP)代理服务器拿到这个报文,进行解密然后根据IP发送给国外的服务器