计算机网络基础
网络协议介绍互联网的本质就是一系列的网络协议。一台硬设有了操作系统,然后装上软件就可以正常使用了。然而这样只能局限于拥有者一个人使用,如果每一个人都这样那么其实是彼此之间孤立且不互通的。将地理位置不同的且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统就叫做计算机网络。 其实计算机和计算机之间的通信和两个人打电话之间的通信原理是一样的。比如中国有很多地区,如果一个新疆人和一个广西人打电话彼此都用着自己地区的方言。那么互相之间是谁都听不懂对方说什么的,但是如果统一说普通话,这两个人互相就能听得懂了。既然有了大家统一都说了普通话的标准,那么至少在中国范围内是全部都听得懂了。但是如果到了国外又不行了,外国人听不懂普通话呀,所以大家这时候就全部说英语。那就又能都彼此听得懂了。 网络协议其实也是和上面的道理是一样的,各个计算机为了能够互相之间进行通信,故而产生了一系列共同遵守的规则,这些规则就被称之为协议。网络硬件本就是基于协议运作的。 互联网协议的功能:定义计算机如何接入 Internet ,以及对已经接入 Internet 的计算机之间的通信制定标准。 大家可能经常听说过 OSI 七层网络协议以及 TCP/IP 网络通信协议等等。实际上这些多少层多少层的都是很抽象的东西,只是按照不同的协议实现的具体功能而划分出的这些层次(层次本身就是虚拟概念,是不存在的东西)。 OSI七层模型与TCP/IP五层模型介绍如今的协议在教科书上一般都会介绍OSI七层协议与TCP/IP五层协议,但是现实生活中基本都是用的TCP/IP协议居多,理解OSI能够更好的理解TCP/IP协议。 每一层都运行的有不同的网络协议,实际上每一层的划分就是通过这些网络协议的功能来划分的。当然每一层也运行着常见的网络物理设备。 关于每一层的具体功能下面会逐一做详细的介绍。但是表示层和会话层这边不做具体的详解,感兴趣的朋友可以自己百度一下相关方面的资料。 TCP/IP五层模型之物理层物理层主要负责基于电器特性发送高低电压 (电信号),高电压对应数字1低电压对应数字0,物理层就是负责线路联通和传输电信号,不断的101010来产生数据。数据本身是没有意义的,但是具有了相应的规则就会产生意义。 物理层包括(光缆,电缆,双绞线,无线电波等等...) TCP/IP五层模型之数据链路层数据链路层最大的作用就是对电信号来制定规则。因为单纯的电信号0和1是没有任何意义。必须要规定多少电信号位一组,每组什么意思,早期的时候各个公司都有自己的分组方式,后来形成了统一的标准。就是以太网协议 ethernet。
?
Head 包含:(固定18个字节) 发送者 / 源地址 :6个字节 接受者 / 目标地址 :6个字节 数据类型: 6个字节 Data包含:(最短46字节,最长1500字节) 数据包的具体内容 Head + data = 最短64字节,最长1518字节。超过最大限制就分片发送。 MAC地址: Head中包含的源和目标地址由来:ethernet规定接入Internet的设备必须要具备网卡。发送端和接收端的地址便是指的网卡的地址,即是MAC地址。 MAC地址在每一块网卡出厂时候都会被烧纸一个世界上唯一的MAC地址。长度为48位2进制。通常由12位16进制数表示,前六位是厂商地址,后六位是流水线地址。 广播: 有了MAC地址,同一网络内的两台主机就可以通信了。(一台主机通过ARP协议获取另一台主机的MAC地址)。ethernet采用最原始的方式,即广播的方式进行通信,即计算机通信基本靠吼。 TCP/IP五层模型之网络层网络层由来:有了ethernet,MAC地址,广播的发送方式,世界上的计算机就可以彼此通信了,但是有一个问题就是说全世界范围内的互联网都是由一个个彼此隔离的小小的局域网组成,如果所有的通信都采用以太网的广播方式。那么一台机器发送的包全世界都会收到,这不仅仅是效率低的问题,更是一种灾难。 由于有太多的局域网了,必须找出一个方法来区分哪些计算机同属于一个广播域,哪些不是,如果是的话再采用广播的方式发送,如果不是就采用路由的方式(向不同的广播域 / 子网分发数据包),并且MAC地址是无法区分广播域的,它只跟厂商有关,于是网络层诞生了,主要功能:引入一套新的网络地址(非MAC地址)用来区分不同的广播域 / 子网。 因此网络层定义了一种叫做IP协议的东西。 IP协议规定网络地址的协议叫做IP协议,它定义的地址称为IP地址,目前广泛采用V4版本。V4版本规定网络地址由32位2进制表示。
子网掩码所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是22222111.22222111.22222111.00000000,写成十进制就是255.255.255.0。 知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。 比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算, 172.16.10.1:10101100.00010000.00001010.000000001 255255.255.255.0:22222111.22222111.22222111.00000000 AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0 172.16.10.2:10101100.00010000.00001010.000000010 255255.255.255.0:22222111.22222111.22222111.00000000 AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0 结果都是172.16.10.0,因此它们在同一个子网络。 总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。 IP数据包?IP数据包和数据帧是一样的,都是有一个head和data。在head里也包括了目标IP地址和自身的IP地址。但是网络层的数据包和数据链路层的数据包都是基于物理层端口传输出去的,这就产生了一个问题,有两个包。怎么解决呢?其实只要把IP数据包放到ethernet数据包的data部分就好了。最后通过物理层电信号发送出去。最终的数据帧就变成了下图。 ?
Arp协议数据链路层的协议,此处举例是为了与网络层IP协议配合完成通信
TCP/IP五层模型之传输层传输层的由来,就是在网络层前提下产生来的。打个比喻,有了IP地址,有了MAC地址我们确实是能和目标计算机进行通信。但是问题是怎么具体和目标计算机怎么通信呢?通过QQ ? 微信?还是其他的通信软件?所以这个时候就需要使用端口,一个端口对应一个软件。而端口是和网卡绑定到一起的,网卡上有MAC地址,有IP地址。如果没有端口号,是找不到相应的应用程序的。 把局域网比作一个房间,IP地址表示目标计算机在哪个房间,MAC地址表示目标计算机坐在了哪里,端口号则表示了怎么和目标计算机进行沟通。是丢纸条?还是直接对话? 传输层就是基于端口的一个层面。而端口可指定的范围是0 - 65535,0 - 1024位系统占用端口。 TCP协议
UDP协议
TCP/IP五层模型之应用层应用层就是属于跑应用程序的一层。 应用层的功能:规定应用程序的数据格式 例:TCP协议可以为各种各样的程序传递数据,比如Email,www,ftp等等,那么,必须有不同协议规定电子邮件,网页,ftp数据的格式。这些应用程序之间的协议就构成了应用层。 其他的比如:
我们其实在今后的学习中使用最多的也就是应用层,在应用层中我们可以定制属于自己的协议(其他层不行),需要注意的是我们自定制的协议必须也要是由Head和data两部分组成。 总结:数据包的的发送就是一个封装的过程,不断的封装解包封装解包。 IP地址并不是凭空产生的,而是由两种情况产生。
接下来我们就讲解通过DHCP服务器获取IP地址的这一套流程,首先这个请求IP地址的过程是通过UDP协议进行的,我们来看一下它的数据组成部分。
首先,这个数据包构造完成后会在当前广播域以广播的方式发送,同一子网内的所有计算机都会收到该数据包,由于接收方地址是FF-FF-FF-FF-FF-FF,所有的计算机都不知道这个包是要发给谁,当所有的计算机对该包进行拆包分析的时候就会看到发送方的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服务DNS( Domain Name System)是"域名系统"的缩写,它的主要职责就是提供域名解析服务。 其实我们的互联网通信绝大多数都是基于TCP/IP协议进行,有了IP地址加端口就可以找到全世界范围内独一无二的一台计算机上的一个网络程序。但是这样做会很麻烦因为我们根本不可能记住太多的毫无规则的IP地址。为了解决这种情况,出现了域名这个玩意儿,这玩意儿和IP地址一一对应,当你在浏览器内输入一个域名的时候就会通过DNS解析出它对应的IP地址。 那么,我们输入一个网址的时候是如何解析出其对应的IP地址呢?这个就有一系列非常复杂的过程(其本质也是通过UDP协议进行发包,因为速度快,不用建立双向链接通道) 我这里尽量用通俗的语言来阐述这一过程,在研究该过程之前我们先来研究一下域名的组成部分。 这里贴一张图,并附上一段视频链接感兴趣的朋友可以看一下里面介绍的很详细:域名详解视频 通常我们可以这么区分:
二级域:两个点如: www.baidu.com ; tieba.baidu.com等等 主机名: 如www,mail等等 域名解析流程:
除此之外DNS查询过程还分为递归查询和迭代查询两种模式。 递归查询递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。 迭代查询DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果 为止。
? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |