快速理解计算机网络

gh# 一、理论知识

互联网分层

多种分层方式(4层、5层、7层)
五层分层方式:

  • 实体层
  • 链路层
  • 网络层
  • 传输层
  • 应用层
协议

什么是协议?
答:把互联网分成若干层,每层要完成特定的功能,所以每层要遵循相应的规则,这些规则就是协议。

实体层

功能:通过一些介质对0、1电信号的传输(介质包含光纤、双绞线、无线电波等)

链路层

功能:将0、1电信号分组
以太网协议:一种将0、1电信号分组的规则。将一组电信号构成的数据包叫做“帧”(分为标头和数据两部分)
在这里插入图片描述
什么是mac地址?
每块网卡出厂时都有一个全世界独一无二的的MAC地址48位,通常由12个十六进制表示
数据包标头信息怎样获取?
答:所有连网设备必须具有网卡接口,数据包就是从一个网卡传递到另一个网卡,帧中标头部分的发送者接收者信息就是通过mac地址标识的,接收者mac地址通过ARP协议(1)获取。
有了目标设备的mac地址怎样发送数据包到对方设备上?
答:通过广播的方式(广播就是向发送设备向本网络所有设备都发送数据包。当设备接收到数据包时,取出其接收方的mac地址与自身mac地址作比较,相同就接收,否则就丢弃)

网络层

网络层的由来:通过Mac地址,理论上就能实现所有地方的网络互通了,但是它有局限性:一就是两台计算机必须在同一网络,二就是如果互联网上所有设备都在同一网络的话,通过广播的方式意味着所有计算机都会收到其他设备发的包,这显然不太实际。实际上的互联网由若干自网络组成,所以必须找到一个方法能区分哪些mac地址属于同一子网。这就导致了“网络层“的诞生(同一子网络通过广播方式发送,非同一网络就通过“路由”(2)方式发送。)网络层通过引入一套新的地址(网址),来判断计算机是否属于同一子网。
网络地址和Mac地址的区别:它们之间没有任何联系,mac地址绑定在网卡上,网络地址由管理员分配。先通过网络地址确定子网络,再通过Mac地址将数据包发到目标地址电脑上

什么是IP协议?
答:规定网络地址的协议,叫做IP协议(所以被IP协议定义的网络地址,成为IP地址)
IP协议分类:IP协议分为IPv4 和 IPv6,IPv4为32位,最大地址个数位 2 32 2^{32} 232,为了解决地址不够用的问题,引入IPv6,IPv6为128位,最大地址个数为 2 128 2^{128} 2128
IPv4:习惯上一般用分成四段的十进制数表示IPv4地址,从0.0.0.0一直到255.255.255.255。IP地址分为两部分,前部分为网络位,后部分为主机位,处于同一网络的IP地址的网络位肯定是相同的。
怎样判断网络位?
答:通过子网掩码判断
子网掩码:形式上等同于IPv4地址,32位,网络位为1,主机位为0。如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
如何判断两个IP地址是否在同一网络?
答:先将两个IP地址与其对应的子网掩码进行AND运算,得到网络地址,然后比较网络地址是否相同,相同就在同一网络,或则就不在同一网络。
IP数据包:根据IP协议发送的数据,称为IP数据包,也包含标头和数据两部分,可以把IP数据包直接放到以太网数据包的数据部分
在这里插入图片描述
由于IP数据包是放在以太网数据包中的数据部分,所以长度受到以太网数据包中数据长度1500的限制,超过1500则需要分割成几个以太网数据包。
ARP协议:源主机发出一个以太网数据包,其中包含目标主机的IP地址,在对方Mac地址这一栏填上FF:FF:FF:FF:FF:FF,表示一个广播地址,源主机所在的子网络的每台主机都会收到这个数据包,然后取出目标IP地址与自身进行比较,若相同则回复自己的Mac地址,否则丢弃这个包。
如何通过ARP协议获取目标机的Mac地址:发送的以太网数据包包含一个IP地址和一个Mac地址。通常情况IP地址是已知的(3),Mac地址由IP地址获得。这里分为两种情况:

  1. 当两台主机在不同子网络:这种情况无法直接获得对方的Mac地址,只能把数据包先传送到两个子网络连接处的网关,让网关处理。所以这里就需要知道网关的Mac地址,网关的Mac地址可根据ARP协议获得。
  2. 两台主机在同一子网络:这里就可以用ARP协议获得对方的Mac地址。
传输层

传输层的由来:有了网络层,已经可以实现互联网上任意主机间的通行,但一台电脑上有若干程序,如QQ间的通信,所以还需要解决端到端的通信 ,所以产生了传输层。
传输层引入了一个新的参数,端口(使用网卡的程序的编号),每个数据包都会发送到主机的特定的端口,所以不同程序就能取到自己的数据。
端口:16位(0——65535之间的一个整数)0——1023端口一般被系统占用,用户可选择1024——65535的端口。
套接字:Unix 系统把 主机+端口 称为“套接字”,有了套接字,就可以进行网络应用程序开发了。
UDP协议:因为加入了端口信息,所以就需要新的协议,UDP数据包也分为标头和数据两部分。因为最后UDP数据包放在IP数据包中,所以长度也会受IP数据包的限制。
在这里插入图片描述

TCP协议:UDP协议优点是比较简单,容易实现,缺点就是可靠性能差,因为数据包发送后,无法知道对方是否收到。所以就诞生了TCP协议。TCP协议规定每个数据包发送后都要求确认,若未收到确认,即代表数据包遗失,则重新发送数据包。TCP协议的优点就是很可靠,缺点就是过程复杂,实现困难,消耗较多的资源。
在这里插入图片描述

应用层

应用层的由来:有了传输层,可以完成互联网上任意电脑程序间的通信。所以必须规定好不同程序的数据格式,不然无法解读。所以针对不同的程序需要不同的协议来规定程序的数据格式。应用层只有数据部分,没有标头,所以直接将程序放入UDP/TCP包的数据部分。所以整个以太网的数据包就变成下面这种形式:
在这里插入图片描述

二、实际场景

获取上网参数

一台电脑要上网首先要设置四个参数:

  • 本机IP地址
  • 子网掩码
  • 网关的IP地址
  • DNS的IP地址

获取四个参数的方法

  1. 通过管理员告知,自己设置。
    在这里插入图片描述
    如果自己设置的话,每次开机都是相同的IP地址,这种情况被称为“静态IP地址上网”。这样导致其他电脑不能使用这个IP地址,或者其他用户使用了这个IP地址,你就无法使用。不够灵活。

  2. 自动获得IP地址,即“动态IP地址上网"。
    DHCP协议:DHCP协议(属于应用层)规定,每个子网中都有一台计算机负责管理本网络的所有IP地址,这台计算机称为”DHCP服务器“,新加入的电脑需要向DHCP服务器发送一个DHCP数据包申请IP地址和相关的网络参数。
    DHCP数据包

    1. 最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

    2. 后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

    3. 最后的"UDP标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

    这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道"这个包是发给我的",而其他计算机就可以丢弃这个包。

    接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。
    新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

访问网址流程

DNS协议(应用层协议):通过网址获得IP地址(网站端口号默认80)
流程:

  1. 输入网址
  2. 然后向DNS服务器(地址已知)发送一个应用层数据部分为DNS数据包(包含网址)的数据包,DNS服务器回应网址的IP地址。
  3. 得到网址的IP地址后,判断是否同一子网络(将网址IP地址和本机IP地址都与子网掩码进行AND运算得到网络部分,进行比较)
  4. 同一子网络通过广播方式发送,非同一网络就通过“路由”方式发送。(若同一子网就直接通过ARP协议获得目标网址得Mac地址,不同子网,就通过网关转发方式获得mac地址,非同一子网路由方式发送,路由器收到分组后1.打开分组,到第三次,提取IP地址;2.将IP地址和子网掩码运算得到网络位,再根据网络位查找路由表;3.重新分组转发)
  5. 目标服务器接收到数据包后,做出响应,完成 一次通信。

注意: 分割数据包,若应用层数据部分加上TCP标头,IP标头,所以IP数据包长度超过了1500,则需要分割数据包,(分割的每个数据包必须包含IP标头,TCP标头)。所以分割后数据总长度会增加。

参考文章》http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值