介绍了网络协议概述:物理层、连接层、网络层、传输层、应用层详解,在OSI七层模型中,处于不同层的中继系统具有不同的名称。计算机之间的通信也要遵循不同层次的协议,来实现计算机的通信。
OSI七层模型:是ISO (International Organization for Standardization )组织在1985年研究的网络互连模型。其目的就是推荐所有公司使用这个规范来控制网络,这样所有公司都有相同的规范,就能互联了。
/
物理层
物理介质,实实在在的物理链路,它的主要作用是传输比特流,就是从1/0转化为电流强弱来进行传输,到达目的之后再转化为1/0,也就是我们常说的数模转换。 常见的物理介质有光纤、双绞线,以及无线电波,物理介质的不同决定了电信号的传输带宽、速率、传输距离以及抗干扰性等等。
数据链路层
对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。
比特流(01)分组,8bit一组,依次帧的数据格式发送; 怎么知道是发送给我的么?---网卡--MAC地址--身份证(唯一) (目的mac+源mac地址)。--寄信(收件人:寄件人)
网络层
A -BCDE- F 如何通信? A 如果要到 F 怎么选择最好路径? 怎么知道MAC地址? 网络层解决的问题: 1. 发送者如何知道接收者的MAC地址? ARP协议 :地址解析协议(address resolution protocol) 2. 发送者如何知道接收者和自己同属一个子网? 通过IP协议 3. 如果接收者和自己不在同一个子网,数据包如何发给对方? 通过一组路由协议(route) 为了解决这些问题,网络层引入了三个协议,分别是IP协议、ARP协议、路由协议 常用的路由协议包括: 静态路由、BGP路由、OSPF路由
传输层
传输层的主要工作是定义端口,标识应用程序身份,并将数据包交给对应的应用程序实现端口到端口的通信,并且传输层引入了TCP/UDP协议。 1. 如果有大量数据包、数据包大?时间很长,网络中断,怎么控制重新传输?怎么确保数据包正确完整---传输层 传输层封装数据包,通过定义的 TCP、UDP 协议实现按序一个一个发送,保证数据完整正确性; 2. QQ发消息,你必须使用QQ接受消息,才可以正常通信;但是电脑中不是只运行了QQ,还有其他程序,怎么确定由谁来处理消息 传输层定义端口的概念-- HTTP-tcp-80端口、https是tcp的443端口?--交给特定应用处理
会话层
会话层提供的服务可使应用建立和维持会话,并能使会话获得同步; 自动寻址,自动发送,实现断点 续传 会话层没有协议 会话层、表示层都是为应用层服务的
表示层
表示层的主要作用之一是 为异种机通信提供一种公 共语言,以便能进行互操作 翻译--实现不同系统之间的通信 会话层、表示层为应用层服务的
应用层
定义数据格式并按照对应的格式解读数据。前面所述的三层负责处理网络通讯的相关细节,这部分需要稳定高效,因此它们是在操作系统的内核空间中,而应用层是在用户空间实现的,负责处理众多业务逻辑,如文件传输、网络管理。 定义了各种协议来规范数据格式。---HTTP,FTP ,DNS ,SMTP
数据传输过程
浏览器输入百度,百度给我返回了一个页面,这个过程是怎么实现的?
右侧封装:主机A
应用层:电脑A在浏览器里输入了一个百度 url 地址,应用层实现输入了一个网址想要去访问百度,会给到
传输层,在数据包的前面封装一个 tcp 的头部和端口,会给到
网络层,把 ip 头部封装到 TCP 头部的外面,IP自带 源IP地址 和 目的 IP 地址,会给到
数据层,会给它封装一个 MAC 的地址(以太头部),接着去寻找,会给到
物理层,会转换为比特流(010101)这样的电信号,在传给百度的服务器
左侧解封装:百度服务器
我们在物理层重组为帧,就可以看到 MAC 的地址,把源地址进行拆开,得到里面得IP,会传给网络层;
网络层看到目的IP是给自己的,然后把IP头部拆开,看到TCP头部端口号,在传给传输层;
传输层看下是哪个端口,看到是 tcp80 的端口,会交给 http 的协议,交给应用层;
http协议来处理,http处理之后发现是访问百度的,就会返回一个百度的页面