百达翡丽手表网站,绿色做环保网站的好处,现代网络编程技术,房屋设计师破解版文章目录 一、网络层 1.IP协议 2.IP协议头格式 3.网段划分 4.特殊ip地址 5.IP地址的数量限制 6.私有ip和公网IP 7.路由 二、数据链路层 1.以太网 2.以太网帧格式 3.MAC地址 4.对比理解MAC地址和IP地址 5.MTU 6.ARP协议 ARP协议的工作流程 ARP数据报的格式 7.DNS 8.ICMP协议 9.N…文章目录 一、网络层 1.IP协议 2.IP协议头格式 3.网段划分 4.特殊ip地址 5.IP地址的数量限制 6.私有ip和公网IP 7.路由 二、数据链路层 1.以太网 2.以太网帧格式 3.MAC地址 4.对比理解MAC地址和IP地址 5.MTU 6.ARP协议 ARP协议的工作流程 ARP数据报的格式 7.DNS 8.ICMP协议 9.NAT技术 NAPT NAT和代理服务器 一、网络层
在复杂的网络环境中确定一个合适的路径
1.IP协议
主机配有ip地址但是不进行路由控制的设备路由器配有ip地址又能进行路由控制
节点路由器和主机的统称
2.IP协议头格式
4位版本4位首部长度8位服务类型TOS)16位总长度字节数16位标识3位标志13位片偏移8位生存时间(TTL)8位协议16位首部检验和32位源ip地址32位目的ip地址选项如果有数据 4位版本号指定的IP协议版本对于IPV4来说就是4 4位头部长度IP头部的长度是多少个32bit也就是lenght*4的字节数4bit表示最大的数字是15因此ip头部最大长度是60字节 8位服务类型3位优先权字段已经弃用4位tos字段和1位保留字段必须置为04位tos分别表示最小延时最大吞吐量最高可靠性最小成本这四者相互冲突只能选择一个。对于ssh/telnet这样的应用程序最小延时比较重要对于ftp这样的程序最大吞吐量比较重要 16位总长度ip数据包整体占多少字节 16位标识唯一标识主机发送的报文如果ip报文在数据链路层被分片了那么每一片里面的这个id都是相同的 3位标志字段第一位保留保留的意思是暂时不用将来可能会用到第二位置为1表示禁止分片这个给时候如果报文长度如果超过MTUip模块就会丢弃报文第三位置表示更多分片如果分片的话最后一个分片置为1其他是0类似一个结束标记 13位分片偏移是分片相当于原始IP报文开始处的偏移其实就是表示当前分片在原报文中处于哪个位置实际偏移的字节数是这个值*8得到的因此除了最后一个报文其他报文的长度必须是8的整数倍否则报文就不连续了 8位生存时间Time to live):数据报到达目的地最大的报文跳数一般是64每次经过一个路由 8位生存时间TTL数据报到达目的地最大的报文跳数一般是64每次经过一个路由ttl-1一直-0还没到达那么就丢弃了这个字段主要是用来防止出现路由循环。 8位协议表示上层协议的类型 16位头部校验和使用crc校验来鉴别头部是否损坏。 32位源地址和32位目标地址表示 c和 s 3.网段划分
ip分为两个部分网络号和主机号网络号保证相互连接的两个网段具有不同的标识主机号同一个网段内主机之间具有相同的网络号但是必须有不同的主机号。不同的子网就是把网络号相同的主机放在一起如果在子网中新增一台主机则这台主机的网络号和这个子网的网络号一致但是主机号必须不能和子网中的其他号重复。那么如果手动管理子网内的IP,很费事。有一种技术为DHCP,能够自动给子网内新增主机节点分配IP地址避免手动管理IP的不便。一般路由器都带有DHCP功能因此路由器也可以看成一个DHCP服务器。曾经有一种方案将IP地址分为A B C D E五类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类导致A类浪费了很多地址针对这种情况提出了CIDR方案引入一个额外的子网掩码来区分网络号和主机号子网掩码是一个32位整数通常用一串0结尾将IP地址和子网掩码进行按位与操作结果就是网络号网络号和主机号的划分与这个IP地址是A类、B类还是C类无关。
4.特殊ip地址
将ip地址中的主机地址全部设置为0就成了网络号代表这个局域网将ip地址中的主机地址全部设为1就成了广播地址用于给同一个链路中相互连接的所有主机发送数据包127.*的IP地址用于本机环回测试通常是127.0.0.1
5.IP地址的数量限制
IPV4是一个4字节的32位整数那么2^32大概是43亿左右tcp/ip规定每个主机都需要有一个ip地址。但是这样是不够的。实际上除了一些特殊的IP地址另外的IP地址并非是按照主机来配置的而是每个网卡都需要配置一个或者多个IP地址。
CIRD在一定程度上缓解了IP地址不够用的问题这个时候还有三种方式来解决
动态分配IP地址只给接入网络的设备分配IP地址同一个MAC地址的设备每次接入互联网得到的IP地址不一定是相同的NAT技术后续详细讲解IPV6用16字节128位来表示一个IP地址
6.私有ip和公网IP
如果一个组织内部组件局域网IP地址只用于局域网内的通信而不直接连接到INTERNET上使用任意的IP地址都可以但是RFC1918规定了用于组件局域网的私有IP地址
10.*前8位是网络号共16777216个地址172.16.到172.31.前12位是网络号共1048576个地址192.168.*前16位是网络号共65536个地址包括在这个范围的都称为私有IP其余的称为公网IP一个路由器可以配置两个IP地址一个是wan口ip,一个是lan口ip(子网路由器的lan口连接的主机都从属于当前这个路由器的子网中不同的路由器子网IP其实都是一样的子网内的主机ip地址不能重复但是子网之间的ip地址就可以复用了每一个家用的路由器其实又作为运营商路由器的子网中的一个节点这样的运营商路由器可能有很多级最外层的运营商路由器wan口ip就是一个公网ip子网内的主机和外网通信时服务器将ip首部的地址进行替换替换称wan口ip这样逐级替换最终数据包中的IP地址称为一个公网ip这种技术位NAT技术如果希望我们自己实现的服务器程序能够在公网上被访问到就需要把程序部署在一台具有外网IP的服务器上。
7.路由
路由就是在复杂的网络结构中找出一条通往终点的路线。
就比如唐僧要去西天取经一路上到一个节点继续问下一个节点怎么走。路由的过程就是这样一跳一跳的。所谓的“一跳”就是数据链路层的一个区间具体在以太网中指的源MAC地址到目的MAC地址之间的帧传输区间。
IP数据包的传输过程也和问路一样
当ip数据包到达路由器时路由器会先查看目的IP
路由器决定着这个数据包是能直接发送给目标主机还是需要发送给下一个路由器。
以此反复直到到达目标ip地址。
那么如何判定这个数据包应该发送到哪里---这个就依靠每个节点内部维护一个路由表
路由表可以使用route命令查看
如果目的ip命中了路由表就直接转发即可。
路由表中的最后一行主要由下一跳地址和发送接口两部分组成当目的地址与路由表中其他行都不匹配的时候就按缺省路由条目规定的接口发送到下一跳地址。
假设某主机上的网络接口配置和路由表如下: 这台主机有两个网络接口一个连接到192.168.10.0/24这个网络另一个连接到192.168.56.0/24这个网络
路由表的destination是目的网络地址GENMASK是子网掩码gateway是下一跳地址iface是发送连接口flags中的u表示此条目有效g表示此条目的下一跳地址是某个路由器地址没有g标识的标识目的网络地址是与本机接口直接相连的网络不必经过路由器转发。
二、数据链路层
用于两个设备同一个数据链路节点之间进行传递。
1.以太网
以太网不是一种具体的网络而是一种技术标准。既包含了数据链路层也包含了一些物理层的。例如规定了网络拓扑结构访问控制方式传输速率等。例如以太网中的网线必须通过双绞线传输速率有10M100M1000M等。以太网是当前最广泛的局域网技术还有令牌环网无线lan等。
2.以太网帧格式
目的地址源地址类型数据crc
源地址和目的地址是指网卡的硬件地址也叫MAC地址长度是48位在网卡出厂时固化。
帧协议类型资源有3中ip,arp,rarp
帧末尾是CRC校验
3.MAC地址
MAC地址是用来识别数据链路层中相连的节点
长度为48位即6个字节一般用16进制数字加上冒号的形式标识例如08002703fb:19)
在网卡出厂时就确定了不能被修改mac地址通常是唯一的虚拟机中的mac地址不是真实的mac地址可能会冲突也有些网卡支持用户配置mac地址
4.对比理解MAC地址和IP地址
IP地址是路途总体的起点和终点
MAC地址描述的是路途上每一个区间的起点和终点
5.MTU
MTU相当于发快递对包裹尺寸的限制这个限制是不同的数据链路层对应的物理层产生的限制。
以太网帧中的数据长度规定最小46字节最大1500字节ARP数据包的长度不够46字节要在后面补充最大值1500称为以太网传输的最大传输单元MTU不同的网络类型有不同的MTU如果一个数据包从以太网路由到拨号链路上数据包长度大于拨号链路MTU了则需要对数据包进行分片不同数据链路层标准的MTU不同
6.ARP协议
ARP协议建立了主机IP地址和MAC地址的映射关系
在网络通讯时源主机的应用程序知道目的主机的IP地址和端口号却不知道目的主机的硬件地址数据包首先是被网卡接收到再去处理上层协议的如果接收到的数据包的硬件地址与本机不符则直接丢弃在通信之前必须先获得目的主机的硬件地址
ARP协议的工作流程 ①主机A的IP地址172.20.1.1它希望与172.20.1.2进行通信 ②发送ARP请求包目标IP地址知道但是MAC地址不知道 ③主机B告诉A它的MAC地址08002074CEEC ④主机B发送ARP响应包172.20.1.2的mac地址为08002074CEEC 源主机发出arp请求询问IP地址是172.20.1.2的主机的硬件地址是多少.并将这个请求广播道本地网段以太帧首部硬件地址填FF:FF:FF:FF:FF:FF表示广播目的主机接收道广播的ARP请求发现其中的ip地址与本机相符则发送一个arp应答数据包给源主机将自己的硬件地址填写在应答包中每台主机都维护一个ARP缓存表可以用arp-a命令查看。缓存表中的表象有过期时间如果这个时间内没有再次使用某个表项则该表项失效下次还要发送ARP请求来获得目的主机的硬件地址。
ARP数据报的格式 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次对于链路层为以太网的情况是多余的但是如果链路层是其他类型的网络则有可能是必要的。 硬件类型是指链路层的网络类型1为以太网 协议类型是指要转换的地址类型0x0800为IP地址 硬件地址长度对于以太网地址为6字节 协议地址长度对于和ip地址为4字节 op字段为1表示ARP请求op字段为2表示ARP应答
7.DNS
DNS是一整套从域名映射道IP的系统。tcp/ip中使用ip地址和端口号来确定网络上一台主机的一个程序但是IP地址不方便记忆所以人们发明一个称为主机的字符串并且使用hosts文件来描述主机和ip地址的关系。
用户可以输入 host -a来查看ip地址。最初通过互联网信息中心来管理这个hosts文件的如果一个新的计算机要接入网络或者某个计算机ip变更都需要到信息中心申请变更hosts文件其他计算机也需要定期下载更新新版本的Host文件才能正确上网。这样就太麻烦了产生了dns系统 dns系统 一个组织的系统管理机构维护系统内的每个主机的IP和主机名的对应关系如果新计算机接入网络将这个信息注册到数据库中用户输入域名的时候会自动查询DNS服务器由DNS服务器检索数据库得到对应的IP地址至今计算机上仍保留了hosts文件在域名解析的过程中仍然会优先查找hosts文件的内容 cat /etc/hosts 8.ICMP协议
ICMP是一个网络层协议 一个新搭建好的网络 需要进行一个简单的测试来验证网络是否畅通但是ip协议并不提供可靠传输如果丢包了IP协议并不能通知传输层是否丢包以及丢包的原因
ICMP正是提供这种功能的协议ICMP主要功能包括
确认IP是否成功到达目标地址通知在发送过程中IP被丢弃的原因ICMP也是基于IP协议工作的但是它并不是传输层的功能因此它仍旧是网络层协议ICMP只能搭配IPV4使用如果是IPV6的情况下需要用ICMPV6
ICMP主要分为两类报文一类是通知出错原因 一类用于诊断查询
PING命令
PING的是域名而不是url一个域名可以通过DNS解析成IP地址ping命令不光能验证网络的连通性同时也会统计响应时间和ttlping命令对先发送一个icmp echo request给对端对端收到之后会返回一个icmp echo reply 有的面试官会问telnet是23端口ssh是22端口那么ping对应哪个端口
ping命令是基于ICMP是网络层而端口号是传输层的内容在ICMP中不关注端口号这样的信息
traceroute命令 也是就与ICMP协议实现 能够打印出可执行程序主机一直到目标主机之前经历多少路由器
9.NAT技术
之前讨论了IPV4中IP地址数量不足的问题NAT技术当前解决IP地址不够用的主要手段是路由器的一个重要功能
NAT能够将私有IP对外通信时转为全局IP也就是一种将私有IP和全局IP相互转化的技术方法很多学校家庭公司内部每个终端设置私有IP而在路由器上或者必要的服务器设置为全局ip全局IP要求唯一但是私有IP不需要在不同的局域网中出现相同的私有IP是不影响的。 NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37NAT路由器收到外部的数据时又会把目标IP从202.244.174.37替换回10.0.0.10在NAT路由器内部有一张自动生成的用于地址转换的表当10.0.0.10第一次向163.221.120.9发送数据就会生成表中的映射关系
NAPT
那么问题来了 如果局域网内 有多个主机都访问同一个外网服务器 那么对服务器返回的数据中 目的IP都是相同的 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机 NAPT就来解决这个问题了 使用IPPORT来建立这个关系
这个关系也是NAT路由器自动维护的 在TCP的情况下建立连接时就会生成这个表项 在断开连接后 就会删除这个表项
NAT具有很多技术缺陷 无法从NAT外部向NAT内部建立连接 转换表中的生成和销毁都需要额外开销 通信过程中一旦NAT设备异常 即使存在设备 所有的TCP连接都会断开
NAT和代理服务器
路由器一般都具备NAT设备的功能通过NAT设备进行中转完成子网设备和其他设备的通信过程
代理服务器看起来和NAT设备有一点像客户端向代理服务器发起请求代理服务器将请求转发给真正要请求的服务器服务器返回结果后代理服务器又把结果回传给客户端 从应用上讲NAT设备是网络基础设备之一解决的是IP不足的问题代理服务器更贴近具体应用比如通过代理服务器进行翻墙加速器等等从底层上讲NAT是工作在网络层直接对IP地址进行替换代理服务器往往工作在应用层从使用范围上讲NAT一般在局域网的出口部署代理服务器可以在局域网上也可以在广域网上也可以跨网。从部署位置上看NAT一般集成在防火墙路由器等硬件设备上代理服务器则是一个软件程序需要部署在服务器上 代理服务器是一种应用比较广的技术
翻墙广域网中的代理负载均衡局域网中的代理
代理服务器又分为正向代理和反向代理反向代理一般作为一个缓存正向代理用于请求的转发。 花王尿不湿是一个很经典的尿不湿品牌, 产自日本. 我自己去日本买尿不湿比较不方便, 但是可以让我在日本工作的表姐去超市买了快递给我. 此时超市看到的买家是我表姐, 我的表姐就是 正向代理; 后来找我表姐买尿不湿的人太多了, 我表姐觉得天天去超市太麻烦, 干脆去超市买了一大批尿不湿屯在家里, 如果有人 来找她代购, 就直接把屯在家里的货发出去, 而不必再去超市. 此时我表姐就是 反向代理