zoukankan      html  css  js  c++  java
  • 计算机网络知识

    image

    MAC层

    • 修改网卡属性来修改MAC地址
      大部分的网卡都可以通过在控制面板中修改网卡属性来更改其MAC地址。

      在“设备管理器中”,右键点击需要修改MAC地址的网卡图标,并选择“属性/高级”选项卡。在“属性”区,就可以看到一个称作“Network Address”或其他相类似名字的的项目,例如“Locally Administrered Address”,总之点击它,在右侧“值”的下方,输入要指定的MAC地址值。要连续输入,不要在其间输入“-”。重新启动系统后设置就会生效了。

      如果你想把网卡的 MAC 地址恢复原样,只要选择“ Network Address ”项右边的“没有显示”再重新启动即可。在 WIN2000 下面是选择“不存在”,不过不用重新启动了

    IP层

    IP分类

    • A类:0.xx.xx.xx ~ 127.xx.xx.xx ( 私有:10.xx.xx.xx )

    • B类:128.xx.xx.xx ~ 191.xx.xx.xx ( 私有:172.16.xx.xx ~ 172.31.xx.xx )

    • C类:192.xx.xx.xx ~ 223.xx.xx.xx ( 私有:192.168.xx.xx )

    • D类:224.xx.xx.xx ~ 239.xx.xx.xx (组播地址) 224.0.0.1指所有主机,224.0.0.2指所有路由器。

      特殊IP

    • 0.0.0.0 (缺省路由地址)

    • 127.0.0.1 (环回地址) 用于IP协议栈测试,不会到达网卡。

    • 255.255.255.255 (广播地址) 指向本网段内的所有主机 (注:路由器不转发)

    • 169.254.x.x (DHCP错误)

    诊断网络问题

    • ping 127.0.0.1
      TCP/IP协议实体会将目的地址为环回地址的IP包送给上层。

      如果ping不通,说明 TCP/IP 协议错误,查看“事件查看器”系统日志,或重新安装 TCP/IP 协议

    • ping 本机IP
      如果网卡连接正确,IP地址设置正确,则TCP/IP协议会在本地路由表中添加项,使目的地址为本机IP的数据包发给环回地址,即交给上层。

      如果ping不通,说明网卡连接不正常或IP设置不正确。

      注:和ping环回地址一样,ping本机IP的数据包不会交给网卡发送,IP数据包会根据本机路由表返回给上层。

    • 清空ARP缓存
      arp -d

    • ping 默认网关
      如果ping不通,说明本机和网关的连接不正常或网关工作不正常。

    NAT

    使用私有地址将网络连至Internet,需要将私有地址转换为公有地址,这个转换过程称为网络地址转换(NetworkAddressTranslation,NAT)。

    NAT有三种类型,通过改写数据包的IP地址或端口号实现

    • 静态NAT (Static NAT):固定将某一私有IP地址改写为公有IP地址。

    • 动态地址NAT (Pooled NAT):根据申请的情况,将某一私有IP地址改写为公有IP地址。

    • 网络地址端口转换NAPT (Port-Level NAT):根据申请情况,将某一私有IP地址+端口号改写为公有IP地址+端口号。IP地址+端口号称为套接字(socket)

      NAPT分为四种:设一个内部主机A的socket_i转换为socket_e

      • full cone NAT, 任何外部主机都可以通过socket_e访问内部主机A

      • (address) restricted cone NAT, 只有和内部主机A通信过的外部主机才能通过socket_e访问内部主机A

      • port restricted cone NAT:只有和内部主机A通信过的外部主机上的某个端口才能通过socket_e访问内部主机A

      • symmetric NAT:内部主机A的socket_i根据连接对象不同,会转换为不同的socket_e,只有和内部主机A通信过的外部主机才能向内部主机A发包,不同外部主机的套接字会通过不同的socket_e和socket_i进行通信

    路由器协议

    RIP

    每30s广播自己的路由表,并从相邻路由器接收相邻节点的路由表,更新自己路由表

    OSPF

    维护3张表

    • 邻接表
    • 链路状态表
    • 路由表

    1, 每10s广播Hello包(空包),维护自己的邻接表;

    2, 与邻接路由器交换链路状态(LSA)的头部;

    3,发送邻接节点缺失的LSA的请求包;

    4,接收邻接节点反馈的完整的LSA;

    5,更新自己的路由表

    DSDV

    RIP + Sequence Number

    DSR

    RREQ

    RREP

    常用网络命令

    • ping (发送ICMP回响请求)

    ping 172.18.130.111 –t 一直ping直到ctrl+C

    ping 172.18.130.111 -n 100 ping100次。

    ping 172.18.130.111 -l 100 数据字段100字节。

    • ipconfig

    /all 显示网卡的所有信息。

    /flushdns 清空DNS缓存。

    /displaydns 显示DNS缓存。

    • tracert

    通过递增TTL值将ICMP回响请求消息发送给目标。

    /d 不将路由器的IP地址解析为它们的名称。

    • arp

    显示和修改ARP缓存(IP转MAC的对照表)。

    -a 显示ARP缓存。

    -s 添加ARP缓存的静态项。如:arp-s10.0.0.8000-AA-00-4F-2A-9C

    • nslookup

    显示可用来诊断域名系统(DNS)基础结构的信息。

    • route

    在本地IP路由表中显示和修改条目。

    add添加路由 例如:添加默认网关route add 0.0.0.0 mask 0.0.0.0 192.168.12.1

    change更改现存路由

    delete删除路由

    print打印路由

    路由表的含义:

    假设本机IP为172.18.130.112,子网掩码为255.255.255.192,网关IP为172.18.130.65,环路IP为127.0.0.1

    IP层协议实体从上层或下层收到任何IP包,用其目的IP地址的网络部分去匹配路由表,然后进行处理

    目的网络地址 Gateway Interface Metric 处理过程 注释
    127.0.0.0 环路IP 环路IP 1 将IP包送给上层 上层发送的测试IP包
    172.18.130.112 环路IP 环路IP 20 将IP包送给上层 发送给本机的IP包
    172.18.130.64 本机IP 本机IP 20 将IP包下发给接口网卡,网卡加上源MAC(本机的MAC)和目的MAC(目的IP的MAC)发送 向直连网段发送的IP包
    224.0.0.0 本机IP 本机IP 20 组播
    172.18.255.255 本机IP 本机IP 20 本地广播
    255.255.255.255 本机IP 本机IP 1 绝对广播
    0.0.0.0 网关IP 本机IP 20 将IP包下发给接口网卡,网卡加上源MAC(本机的MAC)和目的MAC(网关的MAC)发送 缺省路由

    Network Destination 表示目的网络地址,下划线的部分表示有效的网络地址(直连网段的子网掩码为255.255.255.192), Gateway 网关地址 Interface 接口(网卡)

    Metric 这里表示路由优先值,如果有多条相同目的地址的路由记录,路由器会采用metric值小的那条路由,如果同时连接了有线和无线网络,一般有线是20,无线是30

    Persistent Routes:手工配置的静态固化路由,即时重启也不会消失

    开机生成的路由表项:环回路由 + (本机IP+本机直连+本地广播)本地IP数 + 组播 + 绝对广播 + (默认网关)默认网关数

    • netstat

    显示活动的TCP连接。

    查看端口号9050是否被占用

    netstat-aon|findstr"9050"|为管道标示符

    查看PID=2016这个进程

    tasklist|findstr"2016"

    • nbtstat

    显示本地计算机和远程计算机的基于TCP/IP(NetBT)协议的NetBIOS资料

    -n显示本地计算机的NetBIOS名称表

    -a remotename显示远程计算机的NetBIOS名称表

    工作组从本质上说就是共享一个浏览列表(Browser List)的一组计算机,每个工作组中有一台主浏览器,负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表

    一台启用了文件及打印机共享的主机连入局域网会发送一个包给主浏览器告知它的存在,主浏览器会将这个信息加入Browser List,并每隔一段周期进行验证。

    初次进行时,这个周期是1分钟、2分钟、4分钟和8分钟,最后到12分钟,而之后每12分钟客户机都会发一个通知,通知主浏览器“我还在呢”。如果经过三个周期(36分钟),主浏览器都没有听到“我还在呢”的通知,那么它就会把这个客户机的名字从Browser List中删除掉,“网上邻居”中就再也不会有这个用户了。

    指定某台电脑为主浏览器

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesBrowserParameters]中将IsDomainMaster的值改为True

    指定某台电脑不为主浏览器

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesBrowserParameters]中将MaintainServerList的值改为No,同时Computer Browser服务也将无法启动

    • net send

    在局域网内发消息(不能跨网段,必须开启Messenger服务)

    net send 计算机名/IP地址 "消息内容"。 如:net send 192.192.192.1 "还有5分钟就下班关闭服务器了

    小提示:可以使用以下命令启动或禁止Messenger服务: net stopMessenger 停止Messenger服务; net startMessenger 开始Messenger服务

    ICMP

    ICMP全称Internet Control Message Protocol(网际控制信息协议)。层3网关之间发送IP层的控制报文。

    • ICMP报文格式

    ICMP报文包括封装在IP包内,IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。RFC定义了13种ICMP报文格式,具体如下:

    类型代码 类型描述

    0 响应应答(ECHO-REPLY)
    3 不可到达
    4 源抑制
    5 重定向
    8 响应请求(ECHO-REQUEST)
    11 超时
    12 参数失灵
    13 时间戳请求
    14 时间戳应答
    15 信息请求(已作废)
    16 信息应答(
    已作废)
    17 地址掩码请求
    18 地址掩码应答

    下面是几种常见的ICMP报文:

    1.响应请求

    我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

    2.目标不可到达、源抑制和超时报文

    这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“嘿,别连接了,我不在家的!”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。

    3.时间戳

    时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。

    我的理解

    网络上的传输的数据包可以看成是一层一层包起来的信封,

    所谓网络设备工作在某一层,是指这个设备能识别这一层的数据,并利用这一层的数据做一些事情,也就是会拆开数据包的第几层信封,并利用信封上的内容做一些事情。

    网络连接设备:

    中继器工作在物理层,不能识别帧,只能放大信号强度。

    集线器工作在物理层,可以识别帧(会丢弃由于冲突或干扰导致格式错误的帧)。向所有端口转发识别出的帧。不能分割冲突域。

    传统交换机(层2交换机)归于网桥,工作在数据链路层。根据MAC地址来转发数据,只能分割冲突域,不能分割广播域。网桥中会有一张MAC->端口表,记录目的MAC和出口端口的对应关系。这张表由网桥负责维护。层2交换机本身可以没有MAC地址,但一般为了能生成支撑树,都会有一个MAC地址,交换机不改写源和目的MAC地址

    路由器工作在网络层,根据IP地址来转发数据。可以分割广播域。
    路由器可以看成是一台具有多个IP地址的机器,这些IP地址可能属于不同的网络,连接着各自网络中的主机和别的路由器。(路由器中有一张路由表,记录着目的网络和下一站路由器IP地址的对应关系,路由器根据接收IP包中目的IP地址中的网络号,查找路由表,找到下一站路由的IP地址,并根据ARP协议找到下一站路由的MAC地址,将源MAC改为自己的MAC,目的MAC改为下一站路由的MAC。源IP和目的IP在整个发送过程中都不会变,变的是源MAC和目的MAC地址
    简单来说,把一个主机插入多块网卡,每块网卡对应不同的IP地址连入不同的网络,如果主机具有维护路由表的功能(好像一般都有),并对接收到的数据包根据路由表转发,这就是一台路由器。
    如果接收到包的IP是内网IP,路由器必须进行NAT转换,将源IP和源端口号换成自己的IP和特定的端口号,并将对应关系保存在NAT表中。NAT协议本身不改写mac,但nat一般运行于路由器上,路由器会改写mac。nat协议不是对等的,内部主机A必须先对外部主机B发起连接,然后在nat设备中建立映射项,才能接收主机B的数据,一般会忽略非主机B的接收数据,这对P2P通信造成一定影响。

    主机设备:
    网卡工作在数据链路层,负责发送接收帧。网卡一直监测网线中是否有载波信号,如果有载波,则试图接收完整的数据帧,并根据帧中的MAC地址决定是否将帧中的IP包上交CPU或丢弃该帧。如果没有载波且有数据要发送的话,则会发送自己的数据帧(为了减小冲突概率,会延迟一个随机时间再发送)。
    运行在CPU上的IP协议收到网卡上交的IP包后,会看看IP包的目的地址,如果和自己的IP地址相同,则收下该包,处理后上交上层协议。

    如果网络中两台机器如果IP和MAC地址相同,是可以同时上网的,可这同一台机器上开两个浏览器上网的效果相同,但两者的应用程序的源端口号必须不同,如果相同,会造成TCP连接中断

    路由器与交换机的区别

    (1)工作层次不同

    最初的的交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层,而路由器一开始就设计工作在OSI模型的网络层。由于交换机工作在OSI的第二层(数据链路层),所以它的工作原理比较简单,而路由器工作在OSI的第三层(网络层),可以得到更多的协议信息,路由器可以做出更加智能的转发决策。

    (2)数据转发所依据的对象不同

    交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。而路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。IP地址是在软件中实现的,描述的是设备所在的网络,有时这些第三层的地址也称为协议地址或者网络地址。MAC地址通常是硬件自带的,由网卡生产商来分配的,而且已经固化到了网卡中去,一般来说是不可更改的。而IP地址则通常由网络管理员或系统自动分配。

    (3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域

    由交换机连接的网段仍属于同一个广播域,广播数据包会在交换机连接的所有网段上传播,在某些情况下会导致通信拥挤和安全漏洞。连接到路由器上的网段会被分配成不同的广播域,广播数据不会穿过路由器。虽然第三层以上交换机具有VLAN功能,也可以分割广播域,但是各子广播域之间是不能通信交流的,它们之间的交流仍然需要路由器。

    (4)路由器提供了防火墙的服务

    路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

    交换机一般用于LAN-WAN的连接,交换机归于网桥,是数据链路层的设备,有些交换机也可实现第三层的交换。 路由器用于WAN-WAN之间的连接,可以解决异性网络之间转发分组,作用于网络层。他们只是从一条线路上接受输入分组,然后向另一条线路转发。这两条线路可能分属于不同的网络,并采用不同协议。相比较而言,路由器的功能较交换机要强大,但速度相对也慢,价格昂贵,第三层交换机既有交换机线速转发报文能力,又有路由器良好的控制功能,因此得以广泛应用。

    传输层

    • Well-Known Ports (0 ~ 1023)
      FTP: 21 (TCP),Telnet: 23 (TCP),SMTP: 25 (TCP),HTTP: 80 (TCP)

      DNS: 53 (UDP), SNMP: 161 (UDP)

    • Custom Ports (1024 ~ 65535)
      QQ: 8000, 4000

    • 在Windows 2000/XP/Server 2003中要查看端口,可以使用Netstat命令:

      netstat

      -a 显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。
      -n 只以数字形式显示所有活动的TCP连接的地址和端口号。
      -o 显示连接进程ID(PID)。PID可以在任务管理器中查看(选择列添加)
      -p Protocol 显示指定协议的连接。Protocol 可以是 tcp、udp、tcpv6 或 udpv6。
      -e 表示显示以太网发送和接收的字节数、数据包数等。
      -s 按协议显示统计信息。

      查看端口号9050是否被占用
      netstat -aon|findstr "9050" |为管道标示符
      查看PID=2016这个进程
      tasklist|findstr "2016"

    • 限制端口

      1、通过系统自带功能“限制开放”需要的端口(Win2000/XP/server2003)

        通过系统自有的“TCP/IP筛选功能”限制服务器端口,控制面板-网络连接-“本地连接”-右键-属性,然后选择internet(tcp/ip)-属性-高级-选项-选中TCP/IP筛选-属性,在这里分为3项,分别是TCP、UDP、IP协议,假设我的系统只想开放21、80、25、110这4个端口,在“TCP端口”上勾选“只允许”然后点击“添加”依次把这些端口添加到里面,然后确定,重新启动后生效。

      2、通过系统自带防火墙增加“允许通过”的端口 (Windows XP - SP2)

         控制面版-windows防火墙-例外-添加端口,在取名后,输入端口号,确认TCP或者UDP协议,然后确认,在你取名的这个设置前打勾,表示允许通过此端口,不打勾表示不例外。

      3、利用带有的“本地安全策略”功能关闭端口(WINXP HOME版本无此功能)

    fast TCP protocols

    • TCP fast open
    • QUIC
    • KCP

    应用层

    HTTP

    1991 HTTP/0.9
    1996 HTTP/1.0
    1997 HTTP/1.1 默认采用keep alive的长TCP连接(即打开一个网页后,建议底层的TCP连接保持较长的时间)
    2000 HTTPS HTTP over TLS/SSL
    2016 HTTP/2 并发
    2020 HTTP/3 HTTP over QUIC over UDP

    其它

    启用 802.1X 身份验证

    开启服务 “Wired AutoConfig”,然后再本地连接属性中选中启用 802.1X 身份验证

  • 相关阅读:
    poj 1789 每个字符串不同的字母数代表两个结点间的权值 (MST)
    poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
    poj 1631 最多能有多少条不交叉的线 最大非降子序列 (LIS)
    hdu 5256 最少修改多少个数 能使原数列严格递增 (LIS)
    hdu 1025 上面n个点与下面n个点对应连线 求最多能连有多少条不相交的线 (LIS)
    Gym 100512F Funny Game (博弈+数论)
    UVa 12714 Two Points Revisited (水题,计算几何)
    UVa 12717 Fiasco (BFS模拟)
    UVa 12718 Dromicpalin Substrings (暴力)
    UVa 12716 && UVaLive 6657 GCD XOR (数论)
  • 原文地址:https://www.cnblogs.com/chest/p/15473508.html
Copyright © 2011-2022 走看看