网络协议
1. 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,
因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,
才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。
2. 就像我们说话用某种语言一样,在网络上的各台计算机之间也有一种语言,这就是网络协议,
不同的计算机之间必须使用相同的网络协议才能进行通信。
3. 一台设备上的第 n层与另一台设备上的第n层进行通信的规则就是第n层协议。
4. 由于网络节点之间联系的复杂性,在制定协议时,通常把复杂成分分解成一些简单成分,
然后再将它们复合起来。最常用的复合技术就是层次方式
5. 为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,
国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI模型
6. 网络协议理论上有无数种,具体选择哪一种协议则要看情况而定,当然也可以自己写一套协议供自己使用。
OSI 模型各层间关系和通讯时的数据流向如图所示:
七层模型介绍
物理层:
主要任务是将比特流与电子信号进行转换;确定与传输媒体的接口有关的一些特性;
eg:RJ45等将数据转化成0和1;
数据链路层:
定义了通过通信介质相互连接的设备之间数据传输的规范(MAC 地址和分组交换);主要使用两种信道进行通信:点对点信道和广播信道;主要解决三个问题:封装成帧,透明传输和差错检测;
可以简单的理解为:规定了0和1的分包形式,确定了网络数据包的形式;
网络层:
主要作用是实现终端节点的通信(IP协议);IP 协议的三大作用: IP 寻址,路由和 IP 分包;网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务;其实质就是不可靠的传输;
可以理解为,此处需要确定计算机的位置,怎么确定?IPv4,IPv6!
传输层:
传输层是向上面的应用层提供通信服务,它属于面向通信部分的最高层,但同时又是面向用户部分的最底层;其中最重要的两个传输协议是 面向无连接的UDP 和面向连接的 TCP;
可以理解为:每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(TCP/UDP)协议;
会话层
会话层建立、管理和终止表示层与实体之间的通信会话;
建立一个连接(自动的手机信息、自动的网络寻址);
表示层:
表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;
可以理解为:解决不同系统之间的通信,eg:Linux下的QQ和Windows下的QQ可以通信;
应用层:
应用层的具体内容就是规定应用进程在通信时所遵循的协议;而每个应用层的协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的;如: http, FTP 等;
常见的应用层协议:
互联网分层结构的好处: 上层的变动完全不影响下层的结构。
TCP/IP 协议基本概念
TCP/IP 分层模型的分层以以太网上传输 UDP 数据包如图所示;
数据包
宽泛意义的数据包:每一个数据包都包含"标头"和"数据"两个部分."标头"包含本数据包的一些说明."数据"则是本数据包的内容.
细分数据包:
- 应用程序数据包: 标头部分规定应用程序的数据格式.数据部分传输具体的数据内容.
——对应上图中的数据!
- TCP/UDP数据包:标头部分包含双方的发出端口和接收端口. UDP数据包:'标头'长度:8个字节,"
数据包"总长度最大为65535字节,正好放进一个IP数据包. TCP数据包:理论上没有长度限制,
但是,为了保证网络传输效率,通常不会超过IP数据长度,确保单个包不会被分割.
——对应上图中的UDP数据!
- IP数据包: 标头部分包含通信双方的IP地址,协议版本,长度等信息. '标头'长度:20~60字节,"数据包"总长度最大为65535字节.
——对应上图中的IP数据
- 以太网数据包: 最基础的数据包.标头部分包含了通信双方的MAC地址,数据类型等.
'标头'长度:18字节,'数据'部分长度:46~1500字节.
——对应上图中的以太网数据
四层模型
网络接口层
网络接口层包括用于协作IP数据在已有网络介质上传输的协议。
它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,供 TCP/IP 协议的数据结构和实际物理硬件之间的接口。
可以理解为:确定了网络数据包的形式。
网间层
网间层对应于 OSI 七层参考模型的网络层,本层包含 IP 协议、RIP 协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来供网络诊断信息;
可以理解为:该层时确定计算机的位置。
传输层
传输层对应于 OSI 七层参考模型的传输层,它供两种端到端的通信服务。其中 TCP 协议(Transmission Control Protocol)供可靠的数据流运输服务,UDP 协议(Use Datagram Protocol)供不可靠的用户数据报服务。
TCP:三次握手、四次挥手;UDP:只发不管别人收不收得到--任性哈
应用层
应用层对应于 OSI 七层参考模型的应用层和表达层;
不明白的再看看7层参考模型的描述。
TCP/IP 协议族常用协议
- 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
- 传输层:TCP,UDP
- 网络层:IP,ICMP,OSPF,EIGRP,IGMP
- 数据链路层:SLIP,CSLIP,PPP,MTU
重要的 TCP/IP 协议族协议进行简单介绍:
- IP(Internet Protocol,网际协议)是网间层的主要协议,任务是在源地址和和目的地址之间传输数据。
IP 协议只是尽最大努力来传输数据包,并不保证所有的包都可以传输 到目的地,也不保证数据包的顺序和唯一。
IP 定义了 TCP/IP 的地址,寻址方法,以及路由规则。现在广泛使用的 IP 协议有 IPv4 和 IPv6 两种:
IPv4 使用 32 位二进制整数做地址,一般使用点分十进制方式表示,比如 192.168.0.1。
IP 地址由两部分组成,即网络号和主机号。故一个完整的 IPv4 地址往往表示 为 192.168.0.1/24
或192.168.0.1/255.255.255.0 这种形式。
IPv6 是为了解决 IPv4 地址耗尽和其它一些问题而研发的最新版本的 IP。
使用 128 位 整数表示地址,通常使用冒号分隔的十六进制来表示,
并且可以省略其中一串连续的 0,如:fe80::200:1ff:fe00:1。目前使用并不多!
- ICMP(Internet Control Message Protocol,网络控制消息协议)是 TCP/IP 的 核心协议之一,
用于在 IP 网络中发送控制消息,提供通信过程中的各种问题反馈。 ICMP 直接使用 IP 数据包传输,
但 ICMP 并不被视为 IP 协议的子协议。常见的联网状态诊断工具比如依赖于 ICMP 协议;
- TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的,可靠的, 基于字节流传输的通信协议。
TCP 具有端口号的概念,用来标识同一个地址上的不 同应用。述 TCP 的标准文档是 RFC793。
- UDP(UserDatagramProtocol,用户数据报协议)是一个面向数据报的传输层协 议。UDP 的传输是不可靠的,
简单的说就是发了不管,发送者不会知道目标地址 的数据通路是否发生拥塞,
也不知道数据是否到达,是否完整以及是否还是原来的 次序。它同 TCP 一样有用来标识本地应用的端口号。
所以应用 UDP 的应用,都能 够容忍一定数量的错误和丢包,但是对传输性能敏感的,比如流媒体、DNS 等。
- ECHO(EchoProtocol,回声协议)是一个简单的调试和检测工具。服务器器会 原样回发它收到的任何数据,
既可以使用 TCP 传输,也可以使用 UDP 传输。使用 端口号 7 。
- DHCP(DynamicHostConfigrationProtocol,动态主机配置协议)是用于局域 网自动分配 IP 地址和主机配置的协议。
可以使局域网的部署更加简单。
- DNS(DomainNameSystem,域名系统)是互联网的一项服务,可以简单的将用“.” 分隔的一般会有意义的域名转换成
不易记忆的 IP 地址。一般使用 UDP 协议传输, 也可以使用 TCP,默认服务端口号 53。
- FTP(FileTransferProtocol,文件传输协议)是用来进行文件传输的标准协议。
FTP 基于 TCP 使用端口号 20 来传输数据,21 来传输控制信息。
- TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个简化的文 件传输协议,其设计非常简单,
通过少量存储器就能轻松实现,所以一般被用来通 过网络引导计算机过程中传输引导文件等小文件;
- SSH(SecureShell,安全Shell),因为传统的网络服务程序比如TELNET本质上都极不安全,明文传输数据和用户信息包括密码,
SSH 被开发出来避免这些问题, 它其实是一个协议框架,有大量的扩展冗余能力,并且提供了加密压缩的通道可以 为其他协议使用。
- POP(PostOfficeProtocol,邮局协议)是支持通过客户端访问电子邮件的服务,
现在版本是 POP3,也有加密的版本 POP3S。协议使用 TCP,端口 110。
- SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是现在在互联网 上发送电子邮件的事实标准。
使用 TCP 协议传输,端口号 25。
- HTTP(HyperTextTransferProtocol,超文本传输协议)是现在广为流行的WEB 网络的基础,HTTPS 是 HTTP 的加密安全版本。
协议通过 TCP 传输,HTTP 默认 使用端口 80,HTTPS 使用 443。
TCP/IP 协议层级图
网络数据流程概述及其相关
if(目的主机是与自己在同一个网段内){
主机A查询自己的ARP表;
if(有该目的IP地址对应的MAC地址的记录)
{
将该MAC地址作为目的MAC地址,封装数据帧,传送给主机B;
}
else
{
发送一个ARP请求广播给网段内的所有主机,来查询该目的IP地址的MAC地址;
收到ARP请求报文的各个主机如果发现该IP地址是自己的IP地址,则返回一个ARP应答报文告诉主机A自己的MAC地址;
如果发现不是自己的IP地址,则丢弃该报文。
主机A收到这个应答报文后,就按照返回的MAC地址,将IP数据包封装成帧,然后发送到主机B上;
(补充:一般为了减少网络中的报文量,通信双方会维护一个各自的ARP表,
把一次通信中获得IP MAC地址对保存在缓冲的ARP表中,但是ARP表有一个老化机制,删除一段时间内不用的IP MAC地址)
}
}
else if(发现了能与目的网络号相匹配的表目)
{
则把报文发给改表目指定的下一站的路由器或直接连接的网络接口;
报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器或者网络接口的MAC地址,
而IP头部的目的IP地址是主机B的IP地址;
这里要指出的是:ARP请求报文以下一站路由器或网络接口的IP地址为目的IP地址,寻找真的目的MAC地址。
换句话,ARP请求报文只负责IP数据报传输过程中每一跳中的目的MAC地址查询。
}
else
{
寻找标为“默认”的表目,把报文发送给该表目指定的下一站路由器;
报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器的MAC地址,而IP头部的目的IP地址是主机B的IP地址。
}
数据帧在每两个网络设备间传递时,是转换成bit流在传输媒体上传输。
链路层提供了如停止等待协议等机制,控制了bit流在传输媒体上的无措传输。
【1】当我们(主机A)需要给对方(主机B)发送一条信息时,在被分包之前是0、1的数据流,CPU会调用协议栈对这条信息层层封装,最后封装为一个 IP数据包,通过数据总线发送给计算机网卡。
【2】在进行封装LAN层的Mac地址时,主机A需要先判断下主机B是否跟自己是同一个网段中
【3】如果目的主机是与自己在同一个网段内,主机A查询自己的ARP表,有该目的IP地址对应的MAC地址的记录,将该MAC地址作为目的MAC地址,封装数据帧,传送给主机B;
【4】如果目的主机是与自己在同一个网段内,但是没有该目的IP地址对应的MAC地址的记录,主机A发送一个ARP请求广播给网段内的所有主机,来查询该目的IP地址的MAC地址,收到ARP请求报文的各个主机如果发现该IP地址是自己的IP地址,则返回一个ARP应答报文告诉主机A自己的MAC地址,如果发现不是自己的IP地址,则丢弃该报文。主机A收到这个应答报文后,就按照返回的MAC地址,将IP数据包封装成帧,然后发送到主机B上;(补充:一般为了减少网络中的报文量,通信双方会维护一个各自的ARP表,把一次通信中获得IP MAC地址对保存在缓冲的ARP表中,但是ARP表有一个老化机制,删除一段时间内不用的IP MAC地址)
【5】如果目的主机是与自己不在同一个网段内,并且主机A发现了能与目的网络号相匹配的表目,则把报文发给改表目指定的下一站的路由器或直接连接的网络接口;报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器或者网络接口的MAC地址,而IP头部的目的IP地址是主机B的IP地址;这里要指出的是:ARP请求报文以下一站路由器或网络接口的IP地址为目的IP地址,寻找真的目的MAC地址。换句话,ARP请求报文只负责IP数据报传输过程中每一跳中的目的MAC地址查询。
【6】如果目的主机是与自己不在同一个网段内,并且主机A也没有发现能与目的网络号相匹配的表目,则主机A寻找标为“默认”的表目,把报文发送给该表目指定的下一站路由器;报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器的MAC地址,而IP头部的目的IP地址是主机B的IP地址。
【7】在数据被组装好了之后,计算机会将数据包转化为比特流之后转化为电信号,由发光二极管LED或注入型激光二极管ILD把电信号转化为光信号(使光的强度随电信号的幅度(频率)变化而变化),发出光信号沿光媒体传播然后调制到激光器发出的激光束上,并通过光纤发送出去;在接收端,光敏检测器收到光信号后把它变换成电信号,经解调后恢复原信息。
【8】在传输的过程中会有信号的衰减,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,需要多个端口的话可能会使用中继器,中继器和集线器的区别就是中继器是多端口的集线器。
【9】数据通过光线到达了局域网的路由器,当然如果主机A是在当前局域网中某个子网的话,数据还会经过二层交换机或者三层交换机,反正最后还是在路由器中被重新组装外层Mac地址和广域网转发。
【10】经过层层路由器的转发最后达到了目的网路段,如果目标网络设有防火墙,还需要穿过防火墙到达最后的目标路由器实现目标主机的数据送达。
【11】目标主机收到数据后,逆向层层解析,最后得主机A发送的数据。
路由器为什么是网络层的硬件?
路由器之所以说工作在网络层是因为路由器所做的工作需要的信息只到图中的Hn段,
实际上传输层的Ht和应用层的M依然是存在的,但是路由器用不上,所以说路由器工作在网络层,
而Ht和M到了目的主机中才被使用,其中Ht被目的主机中的TCP使用来分辨传输到哪个具体进程,
M被目的主机中的应用程序使用来解读传输的数据是啥
各层是相互包含的,只是各个层次的设备只需要设备所在层次的那部分信息
类比与交通系统。
物理层不管内容,只管送给下一站。相对于公交车。
链路层只管局域,不管长途。链路层有乘车起点和终点。
链路层还有一个要求,就是发件人到端局 只能用同一个公司的服务。
链路层管公交换乘,但必须是同一区域内换乘。根据起点终点决定换乘 路线。
网络层管跨区域交通,区域间的交通同样有链路层和物理层。
首先这些层不是在电脑上的 ,详细渐渐的深化学习就了解了
比方A向B发送一个QQ信息 “你好” A主机在应用层大将这条信息准备好(你从键盘上打字),
然后表示层将这2个字的详细信息准备好(巨细,粗细,色彩等),会话层就与B树立会话衔接(喂,你在吗,我要发东西给你),
传输层就让AB两台主机树立逻辑上的衔接(QQ是UDP无衔接的,MSN是TCP有衔接的),
传输层将数据分段 并在一切数据段之前打上端口号4000(QQ的端口号)的标签,
网络层进行路由寻址,就是找到去往B的路,然后在数据段前面加上意图IP变成数据包送到数据链路层,
数据链路层在数据包前面加上下一个路由的MAC地址(每通过一个路由变一次,直到B的MAC地址),
然后将数据包转换为帧,最终到物理层,物理层将数据帧变成010101的比特流,发送出去,
以上就是封装的进程,然后通过N个路由,最终送到主机B物理层上,开端解封装,
将01010比特流通化为数据链路层可以辨认的数据帧,并拆下最前面一段MAC地址,拿出来一看,
哦,这是给我的数据包,然后将数据帧转化为数据包送给网络层继续拆,拆下IP地址,也契合,再转化为数据段送给传输层,
传输层也拆开端口信息,然后将数据段重组成数据发给4000端口(不然计算机不知道到底应该将数据交给谁处理,
端口就是电脑知道这到底是谁的数据,总不能发给音乐或许视频什么的吧),再到会话层完结停止这次会话,
到表明层和应用层就在主机B大将“你好“两个字显示出来,整个进程就基本完结了。 这仍是很简略的进程,
网卡自身属于物理设备,主要任务是将双绞线与您的网卡相连.
数据链路层作为OSI模型的第二层.在二层的为MAC地址,数据单元是FRAME.网卡自身运用的是MAC地址,
与交流机相连构成一个规范交流系统.与交流机通讯运用的是FRAME,用的地址也是MAC地址.
常见的对照关系
物理层 网线 水晶头
数据链路层 交换机 网卡
网络层 路由器
传输层以上基本都是软件实现了
对了
计算机中的网卡基本工作在整个协议栈。
首先ip就像是你的房间号,mac地址就像是你的身份证号码。ip地址是可以改变的,而mac地址是厂商制定的不可改变的。
通信过程中,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
其实在链路层之下还有物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。
注意网卡芯片(例如DM9000A)收到的数据就是如上所示的一长串数据;其中包括以太网帧头、IP报报头、传输层协议段头、应用层所需数据。
*参考文章