(1)NAT技术就是将私有的ip地址转换为公有ip地址,用于访问公网。
(2)比如下图所示,内网用户10.1.1.1要访问外网123.3.2.3,就会先经过防火墙技术转换成本区域(如本学校)的公网IP123.3.2.1之后,再去访问外网。外网返回的流程也是一样的,先发给防火墙,防火墙做进一步的解析,把数据发给内网用户。
(3)当然以上这种转换方式,如果内网又1000个用户,那么就需要1000各公网IP,这种是不现实的,对于解决ipv4地址短缺来说没有效果,所以要加上端口号。端口号可以让外网区分到底发给哪个内网用户。
(4)备注:
端口号:分为TCP和UDP头部,由于服务器里面有很多个端口号,不同的端口号对应不同的功能,所以运输层需要加上端口号,只有找到正确的端口号,才能知道到了服务器之后应该找哪个应用。
IP地址
MAC地址:也就是网卡地址,因为一台服务器/主机上面可能有多个网卡,所以需要确定
端口号+IP地址+MAC地址=准确的找到传输信息的对方。(如果没有MAC,则是广播)
二进制流:物理层的
路由器(帮助找到主机/服务器)拿到包的时候也会层层解包,解包到网络层的时候,就可以知道包内的IP地址.
TCP是可靠的传输,可靠在它不会丢掉信息,比如百度搜索框就是TCP的传输,信息虽然有延迟,但是信息的内容不会丢掉;
UDP是不可靠的传输,不可靠在它会丢信息内容,比如视频聊天和看直播的时候,网络不好的情况下经常15:21分发出的信息,可能15:41才收到信息。
补充:前面的三次是建立连接的三次握手,后面的四次是释放连接的四次挥手。
客户端访问服务器,首先通过客户端的IP地址找到客户端的MAC地址(网卡地址),然后通过客户端的MAC地址找到服务器的MAC地址,然后通过MAC地址找到服务器的IP地址。(一个客户端可能有很多个网卡地址,所以外部的网络是先通过网卡地址然后再找到IP地址的。)
客户端有很多种软件,比如说QQ、微信、王者荣耀等,然后服务器上也有很多服务器软件,每一个服务器软件上有很多软件对应的后台。如果客户端要下载一个文件,那么就要向服务器发送请求,必须先找到80端口,然后服务器里面的服务器软件会根据发过来的请求(比如请求QQ文件)找到对应的QQ项目的代码,然后去处理问题。
如果说开发人员的Java代码去处理客户端的请求,或者客户端发来一个请求,那么必须通过服务器上的某个端口,然后到达服务器,服务器启动JVM,然后JVM启动加载一个服务器软件(Java里面的服务器软件就是Tomcat),然后Tomcat软件执行Java代码。
假设客户端要去访问8080端口的QQ,那么客户端需要输入网址:http://IP地址:端口号/项目。【其中http是一种协议,表示客户端通过http协议去访问;IP地址确定唯一的服务器;服务器里面有很多个服务器软件,到底是哪个服务器软件,要通过端口号来识别;找到服务器软件之后,要找哪个项目,比如QQ项目;】
所以说,编程的时候,要先设置一个服务器,可以在自己电脑上安装一个服务器软件,然后客户端是自己,服务器也是自己。Java开发必须安装的软件有JDK、Tomcat、IntelliJ IDEA UItimate(其中的JDK文件就是上图所说的JVM)。
传输数据的时候,如果ping过,那么对方的IP地址和MAC地址能够获取,此时能够通过ICMP协议通信。如果不ping的话,只知道对方IP地址而不知道对方的网卡信息,是不能够发送消息给对方的,如果必须发送消息,那就通过ARP协议(广播)来找到对方,注意ARP协议只在同一个网段中才有用,ARP协议的作用是通过IP地址找到对方的MAC地址。不知道对方MAC地址的情况下传输数据的过程如下图所示。(有6条数据但是仅有两个回合,一是计算机0通过ARP协议获取对方MAC地址,然后是通过ICMP协议正常的一次请求信息。第一条数据表示从计算机0开始,第二条数据表示0-->1,第三条数据是1-->0)
集线器是没有智商的,集线器需要在同一个网段。集线器上的某一台电脑需要发送消息给另一台电脑的时候,会广播发送给同一个集线器里面的所有电脑,同样回复过来的信息也会发送给所有电脑。第一次在不知道接受放MAC地址的时候,是这样广播的,通过ARP协议;但是之后(会有缓存MAC地址,往后所有发送消息时都知道对方的IP和MAC)以ICMP协议发送消息的时候还是以广播的形式发送数据包,这是因为集线器没有智商,没有缓存(计算机才有缓存,能记录下IP和MAC)。
知道自己电脑的IP和MAC命令:arp -a
集线器产生的问题:如果集线器群之间连接的电脑有1000台,那么这1000台电脑都得对发过来的数据包进行操作。解决办法就是集线器。
特点:能够通过学习来得知每个接口另一侧的MAC地址,从而起到隔绝冲突域的作用(网桥两边自成一个冲突域)。
如图所示,最开始IP和MAC没有绑定的时候,是执行ARP协议,网桥0的接口有MAC地址表,左边会记录自计算机6的MAC地址,然后发送消息到集线器0,最终到达计算机2;回消息的时候,网桥右边会记录来自计算机2的MAC地址,一来一回之后,使用的就是ICMP协议,就能够记住到底应该发往哪个集线器。
交换机接口的基本配置:
其中,在命令前加undo关键字,即为undo命令行。 undo命令行一般用来恢复缺省情况、禁用某个功能或者删除某项配置。
跨网段必须用到路由器
(1)特点:严禁广播风暴。在不同网段之间转发数据,并隔绝广播域。
(2)如果此时计算机2需要发消息到计算机5。
首先,主机大数据之前,会判断目标IP地址是否跟自己在同一个网段。
然后同一个网段,发ARP广播(交换机或集线器);不在同一个网段,用网关(由路由器提供网关,下图所示的路由器有左右两个网关)传递到对应的网关。
最后,路由器左边的网关和左边处于同一个网段,一般是*.*.*.1。
所以计算机2发送消息到计算机5的时候,必须在计算机2上配置网关信息,才能保证发消息给不同网段的计算机时,信号能够传输到路由器上,此时计算机2上配置的网关信息就是路由器左边的网关。
不同网段的计算机发送消息,首次也是ARP协议,因为计算机需要知道网关的MAC地址,此时网关也算是一个口。然后网关返回MAC地址。之后再计算机2使用ICMP协议发送消息到路由器。。。此时路由器也是需要找到计算机5的MAC,所以还是ARP协议,等计算机5返回其MAC地址后,再把数据包用ICMP协议传到计算机5。总之经过路由器发送消息时的协议是ARP-ICMP-ARP-ICMP-ICMP-ICMP……
(3)网关:需要合理的IP地址,网关设置不是固定的,只要保证在同一个网段就成。
(4)默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由、动态路由告诉它。其中静态路由适合于小规模的网络,由管理员手动添加路由信息;动态路由适用于大规模网络,通过路由选择协议如RIP、OSPF自动获取路由信息。
(5)计算机通过路由器发消息的过程。
A。一般情况下直接发送到对应交换机:如图所示,共有5个网段(上下左右中间),计算机0想要发消息给计算机3,那么需要配置路由器0的静态路由(网络193.169.2.0,掩码255.255.255.0,下一跳194.170.1.2;命令配置用ip route 193.169.2.0 255.255.255.0 194.170.1.2),从配置可以看出,路由网络是计算机3所在的网段,下一跳地址是路由器1左边的网关。
路由器配置上的FastEthernet口是以太网口用于连接交换机的,Serial口是表示串口,连接其它路由器的。
B。指定固定IP地址:如果计算机0访问计算机4,由于之前路由器0已经配置了静态路由193.169.1.0,所以可以直接访问,如果说配置的静态路由是193.169.1.11(如下图所示),那么就是指定IP地址将信息发送到计算机4.
C。发消息到对应路由器上所有IP:配置静态路由的为193.169.0.0 255.255.0.0 194.170.1.2
(6)总结路由器配置的几种方式
特定主机路由:193.169.1.10 255.255.255.255 194.170.1.2【子网掩码全1】
网络路由: 193.169.1.0 255.255.255.0 194.170.1.2【网段】
汇总路由: 193.169.0.0 255.255.0.0 194.170.1.2【路由器上全网段】
193.0.0.0 255.0.0.0 194.170.1.2【路由器上全网段】
默认路由: 0.0.0.0 0.0.0.0 194.170.1.2【路由器不知前路】
越精确,优先级越高。实在不知道怎么走,才会选择默认路由。
(7)案例,配置如图所示的路由表。
路由器0:193.169.1.0/24-->200.0.0.2
194.170.1.0/24-->200.0.0.2
196.171.1.0/24-->200.0.0.2
路由器1:192.168.1.0/24-->200.0.0.1
0.0.0.0/0 -->200.0.1.2
(因为右边路由器比较多,因此右边统一默认路由,左边仅有一个,因此配特定路由)
(1)每一个网卡的物理MAC地址都是唯一的,但是MAC可以篡改。
有些地方会在交换机上设置允许上网的MAC地址,比如单位将IP地址和MAC地址绑定。如果不绑定的话,可以将自己电脑的MAC改成交换机可上网列表内的MAC,就可以蹭网,当然一旦两台一样的MAC出现在网段中,肯定有一台电脑不能上网
(2)
(3)
(4)一旦IP对应的网卡地址换了,则会自动重新ARP一次。
(5)网段计算工具:https://www.sojson.com/convert/subnetmask.html
备注:根域名其实就是一个点。如baidu.com.。最后一个点是根域名,com是顶级域名,baidu是二级域名。
应用层协议。
进行域名解析的时候,首先是
(1)动态ip地址是通过DHCP协议来完成的。
◼DHCP(Dynamic Host Configuration Protocol),译为:动态主机配置协议
pDHCP协议基于UDP协议,客户端是68端口,服务器是67端口
◼ DHCP服务器会从IP地址池中,挑选一个IP地址“出租“给客户端一段时间,时间到期就回收它们
平时家里上网的路由器就可以充当DHCP服务器,分配给自己ip地址(如192.168.3.1是如下截图的网关,192.168.3.3是图示的自己的ip地址。)
(2)DHCP分配IP的过程
(3)细节补充
◼ DHCP服务器可以跨网段分配IP地址么?(DHCP服务器、客户端不在同一个网段)
p可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
◼ 自动续约
p客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约
◼ 常用命令
pipconfig /all:可以看到DHCP相关的详细信息,比如租约过期时间、DHCP服务器地址等
pipconfig /release:释放租约
pipconfig /renew:重新申请IP地址、申请续约(延长租期)
(1)设计HTTP最初的目的是:提供一种发布和接收HTML页面的方法,由URI来标识具体的资源(比如下图所示,上一行的html仅能在自己电脑上定位资源;而下一行的内容能在全网定位资源,其输出是全网唯一的)。后面用HTTP来传递的数据格式不仅仅是HTML,应用非常广泛。