您的位置:首页 > 理论基础 > 计算机网络

计算机网络的基础知识

2015-01-08 21:08 274 查看
1、OSI七层网络模型

第一层 物理层 (硬件设施) 设备如: 集线器 hub

第二层 数据链路层 以太帧 mac地址 14长度(6位源MAC + 6位目的MAC + 2位IP类型) 设备如:交换机

第三层 网络层 ip层20长度 设备如: 路由器

第四层 传输层 udp/tcp 传输模式udp 8字节 、 tcp 20字节

第五层 会话层

第六层 表示层

第七层 应用层 (应用层数据)

2、计算机网络是什么

由许多计算机通过路由器交换机组成的一个庞大的系统叫做互联网。

建造网络的目的:交互数据,以及相互通信

3、私有的ip地址

私有IP地址的范围,也就是一般用于内网的IP地址有:

10.0.0.0-10.255.255.255 (A类地址)

172.16.0.0—172.31.255.255 (B类地址)

192.168.0.0-192.168.255.255 (C类地址)

(如果整个互联网的机器都是公网地址那么必然会出现供给不足,一个公司来说只需要一个公网地址足矣,内部是通过dhcp分配或者静态分配的ip,他们与外界交互必须通过公网地址进行交互);

举个例子:

例如你有 ipad,iphone5,pc,但是你家只有一个网线与外界联通,也就是只分配了一个公网ip,那么你们首先会选择一个路由器作为一个信号发射器,那么你们家的网关地址即为 192.168.0.1,然后你的这些设备只要连接上路由器,路由器就会由DHCP服务器自动分配ip,那么你就可以上网了,(那你这些设备之间就组件了一个小小的局域网) 只不过 你们是通过本机与路由器,再由公网地址出去的罢了。

想观察实例 可以在cmd下输入: tracert www.baidu.com 你就可以看到第一个跃点就是你的路由器的地址 192.168.0.1 ,第二个跃点即你家的公网ip地址。



4、MAC地址

MAC地址由网络设备制造商生产时写在硬件(网卡)内部,每块网卡的MAC地址在世界上都是唯一的。

5、最大传输单元(Maximum
Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。

因特网协议允许IP分片,这样就可以将数据报分成足够小的片段以通过那些最大传输单元小于该数据报原始大小的链路了。这一分片过程发生在
IP 层(OSI模型的第三层,即网络层),它使用的是将分组发送到链路上的网络接口的最大传输单元的值。原始分组的分片都被加上了标记,这样目的主机的
IP 层就能将分组重组成原始的数据报了

数据帧超过MTU怎么办?

如果IP层有一个数据包要传,而且数据的长度比链路层的MTU大,那么IP层就会进行分片,把数据包分成托干片,让每一片都不超过MTU。注意,IP分片可以发生在原始发送端主机上,也可以发生在中间路由器上。

把一个IP数据包分片以后,只有到达目的地之后才进行重新组装。重新组装由目的端的IP层完成,它的目的就是使分片和重新组装过程对于传输层(TCP和UDP)是透明的。已经分片过的数据包仍然有可能会再次进行分片,也就是说IP分片可能发生不止一次。什么保证了这点?因为IP头部中包含的数据为分片和重新组装提供了足够的信息。

来做个测试吧,看看怎么分片的,我用ping命令,也就是利用ICMP协议来测试。以太网MTU为1500,减去IP头部20个字节,再减去ICMP 8个字节,那么我们认为不分片的上限值为1500-20-8=1472。

注意看下图的实验结果,很明显。



6、ARP 地址解析协议

通过ip地址得到其物理地址, 在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。可以通过arp
-a 指令获取。

(rarp 反向地址解析协议) 即由 mac-》ip

7、大家看设备A向设备B发送数据的过程说明:

1.通过已知目的IP,判断目的IP是否与自己在同一网段;(ip地址 与上 一个子网掩码)

2. 如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A将B的MAC地址缓存在ARP表中,并用此MAC封装数据包并发送出去;(局域网的交互模式)

3. 如果不在同一网段,就将数据包发向一个缺省网关,以缺省网关的MAC地址为目的MAC地址。
(公网的交互模式)

(这边做一个简单的说明, 主机A现在ping 一个百度的域名,首先通过DNS服务器得到域名所对应的ip地址,假设一对一,判断ip地址是否和我们的主机ip地址处于一个网段,明显不在同一个网段,那么怎么办? 那就将缺省的网关的mac地址作为目的mac地址,封装一个dns请求包发给网关,但是源ip 和 目的ip不会变化,然后网关通过查询路由表,将数据转发出去。直到找到相应网段的路由截止,
如果 目的ip的在一个局域网中, 那么必然需要经过交换机的mac地址表找到 最终的 主机,重复 上述过程, 直到找到该ip所对应的mac地址,然后将mac地址封装发送一个响应包回来,依旧上述过程);

总之在和外界交互过程中 不变的是ip地址, 变化的是mac地址。

------------------2015-1-8 20:59

8、MTU 和 MSS 的区别

mtu是网络传输最大报文包。 mss是网络传输数据最大值。 mss加包头数据就等于mtu. 简单说拿TCP包做例子。 报文传输1400字节的数据的话,那么mss就是1400,再加上20字节IP包头,20字节tcp包头,那么mtu就是1400+20+20. 当然传输的时候其他的协议还要加些包头在前面,总之mtu就是总的最后发出去的报文大小。mss就是你需要发出去的数据大小。1.MSS: Maxitum Segment Size 最大分段大小 2.MSS最大传输大小的缩写,是TCP协议里面的一个概念。 3.MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。</span>
一般MTU 是在链路层上面 一般加上桢头(mac 地址+ type类型 14个字节) 桢尾 (4字节的校验)一般链路层的包最大值为 MTU=1500 + 18=1518,如果超过这个值 就会进行ip包的分片,但是这个是由 网卡来进行的,而 MSS 一般是数据层的最大传输大小, 超过这个值就会进行tcp分片,所以有时候必要的代码中 就需要进行 tcp的重组。 一般看包分不分片,可以观察连续的两个包方向是否相同,并且ack 是不是相同进行判断。</span>


------2015-1-20 23:05
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: