网络编程——七层协议
两台计算机之间的通信条件:
1.首先得通过各种物理连接
2.找准确确定对方计算机的位置
3.通过统一的标准进行数据的收发
连接两台计算机之间的internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为互联网协议。
互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。
七层协议
1.物理层
孤立的计算机想要一起愉快的玩耍,就必须接入internet(计算机之间必须组网)
功能:发送高低电压(电信号),高压为1,低压为0
2.数据链路层
由来:单纯的电信号0,1是没有任何意义的,必须规定多少位一组,每组什么意思
功能:定义了电信号的分组方式
因后面需要,简介一下以太网:
以太网(Ethernet) 是一套广泛应用于局域网(LAN), 城域网(MAN) 和广域网(WAN) 的一套计算机网络技术。
一组电信号是一个数据包,我们把它叫做帧
以太帧起始部分由前导码和帧开始符组成。后面紧跟着一个以太网报头
head | date |
---|
head包含十八个字节
1.发送者/源地址 6字节
2.接收者/目标地址 6字节
3.数据类型 6字节
date 最短46字节,最长1500字节
数据包的具体内容
head长度+date长度=最短46字节,最长1518字节,超过最大限制就分片发送
**mac地址:**它是一个用来确认网络设备位置的位址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。每块网卡出厂时都被烧制上一个世界唯一的mac地址。
只要不更改自己的MAC地址,MAC地址在世界是惟一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性。
广播:
有了macc地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)
ethernet采用最原始的方式,广播的方式进行通信
3.网络层
有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由
一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,不只是效率底下,更是一场灾难
索引必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关
功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
IP协议:
规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
范围0.0.0.0-255.255.255.255
一个ip地址通常写成四段十进制数,例:172.16.10.1
ip地址分成两部分
网络部分:标识子网
主机部分:标识主机
注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网
例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网
子网掩码
所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.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:11111111.11111111.11111111.00000000
AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
172.16.10.2:10101100.00010000.00001010.000000010
255255.255.255.0:11111111.11111111.11111111.00000000
AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
结果都是172.16.10.0,因此它们在同一个子网络。
总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
ip数据包
ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分
head:长度为20到60字节
data:最长为65,515字节。
而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。
4.传输层
从通信和信息处理的角度看,运输层向上提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最底层。
运输层的两个主要协议
用户数据报协议UDP(User Datagram Protocol)
传输控制协议TCP(Transmission Control Protocol)
想要了解的小伙伴自己下去搜一下看一下,在这里就不过多的介绍了
5.会话层
功能一、建立会话
A、B两台电脑,A向B共享了一个文件夹,B通过执行“开始菜单–>运行–>\192.168.1.1 (A的ip地址)”访问A的共享文件夹,这时B电脑上会弹出一个验证框,要求输入A电脑上的账号密码,输入A电脑的账号和密码后,就能够访问A共享出来的文件夹;
Windows系统中共享文件用的是SMB协议,这是一个会话层的协议。
注意:如果在A电脑上设置了这个账号没有对这个共享文件夹的访问权限,那么B进入A的共享文件列表时,是无法进入这个共享文件夹的,因为没有权限。(这是会话建立时的身份验证、权限鉴定的过程)
这就在A、B电脑上都建立了一个会话。由会话层完成,这就是
会话层功能二、保持会话
假设系统中将SMB的会话断开时间设置为60分钟,电脑B从A共享的文件夹里拷贝了自己需要的文件只花了10分钟,然后关闭了A的共享窗口。
注意,这时B关闭的是一个进程,而不是这条会话。
过了5分钟,A又向B共享了一个新的文件,B再次执行“开始菜单–>运行–>\192.168.1.1 (A的ip地址)”访问A的共享文件夹,这时你会发现,不用再次验证A的用户名和密码了,直接就可以进入A的共享文件夹。因为这条会话还没断开,之前的身份和权限验证的过程直接省略了。
这就是会话层的“管理会话”功能。
会话层功能三、断开连接:
A又向B共享了另外一个文件,然后电脑A这时又重启了一下电脑,电脑B再次执行“开始菜单–>运行–>\192.168.1.1 (A的ip地址)”访问A的共享文件夹,这时会发现,要再次输入A的用户名和密码。
因为在电脑A重启电脑的时候,电脑A的会话层会将这条连接释放掉。
或者当60分钟过了时,电脑A、B也会释放这条连接。
这就是会话层的“断开连接”功能。
现在你是不是知道了会话层的作用了呢?联想一下你平时上网时,还有哪些网络应用可以看到这些功能的踪迹呢。
6.表示层
表示层向上对应用层服务,向下接受来自会话层的服务。表示层位于分层结构的第六层,它的主要作用之一是为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。与第五层提供透明的数据运输不同,表示层是处理所有与数据表示及运输有关的问题,包括转换、加密和压缩。每台计算机可能有它自己的表示数据的内部方法,例如,ASCII码与EBCDIC码,所以需要表示层协定来保证不同的计算机可以彼此理解。例如,IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在这种情况下,便需要表示层来完成这种转换。如果您想要用尽量少的词语来记住这第6层,那就是“一种通用的数据格式”。
表示层为应用层提供的服务有三项内容
**语法转换:**语法转换涉及代码转换和字符集的转换,数据格式的修改、数据结构操作的适配、数据压缩、数据加密等。
**语法选择:**语法选择是提供初始选择的一种语法和随后修改这种选择的手段。
联接管理:利用会话层提供的服务建立表示联接,管理在这一联接之上的数据运输和同步控制,以及正常或非正常地终止联接。
功能:
网络的安全和保密管理;文本的压缩与打包; 虚拟终端协议(VTP)。
语法转换:将抽象语法转换成传送语法,并在对方实现相反的转换(即将传送语法转换成抽象语法)。涉及的内容有代码转换、字符转换、数据格式的修改,以及对数据结构操作的适应、数据压缩、加密等。
语法协商:根据应用层的要求协商选用合适的上下文,即确定传送语法并传送。
连接管理:包括利用会话层服务建立表示连接,管理在这个连接之上的数据运输和同步控制(利用会话层相应的服务),以及正常地或异常地终止这个连接。
通过前面的介绍,我们可以看出,会话层以下5层完成了端到端的数据传送,并且是可靠,无差错的传送.但是数据传送只是手段而不是目的,最终是要实现对数据的使用.由于各种系统对数据的定义并不完全相同,最易明白的例子是键盘,其上的某些键的含义在许多系统中都有差异.这自然给利用其它系统的数据造成了障碍.表示层和应用层就担负了消除这种障碍的任务.
对于用户数据来说,可以从两个侧面来分析,一个是数据含义被称为语义,另一个是数据的表示形式,称做语法.像文字,图形,声音,文种,压缩,加密等都属于语法范畴.表示层设计了3类15种功能单位,其中上下文管理功能单位就是沟通用户间的数据编码规则,以便双方有一致的数据形式,能够互相认识.
它为服务,协议,文本通信符制定了DP8822,DP8823,DIS6937/2等一系列标准。表示层如同应用程序和网络之间的翻译官,主要解决用户信息的语法表示问题,即提供格式化的表示和转换数据服务。数据的压缩、解压、加密、解密都在该层完成。
7.应用层
应用层也称为应用实体(AE),它由若干个特定应用服务元素(SASE)和一个或多个公用应用服务元素(CASE)组成。每个SASE提供特定的应用服务,例如文件运输访问和管理(FTAM)、电子文电处理(MHS)、虚拟终端协议(VAP)等。CASE提供一组公用的应用服务,例如联系控制服务元素(ACSE)、可靠运输服务元素(RTSE)和远程操作服务元素(ROSE)等。
是七层OSI模型的第七层。应用层直接和应用程序接口并提供常见的网络应用服务。应用层也向表示层发出请求。
应用层
应用层
应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务.其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE.
CASE提供最基本的服务,它成为应用层中任何用户和任何服务元素的用户,主要为应用进程通信,分布系统实现提供基本的控制机制;特定服务SASE则要满足一些特定服务,如文卷传送,访问管理,作业传送,银行事务,订单输入等。这些将涉及到虚拟终端,作业传送与操作,文卷传送及访问管理,远程数据库访问,图形核心系统,开放系统互连管理等等。