OSI参考模型
模型 | 说明 |
---|---|
应用层 | 访问网络服务的接口.例如:为操作系统或网络应用程序提供访问网络服务的接口.常见:Telnet, FTP, HTTP,SNMP,DNS等. |
表示层 | 提供数据格式转换服务.例如:解密与加密.图片解码和编码,数据的压缩和解压缩.常见:URL加密,口令加密,图片编解码. |
会话层 | 建立端连接并提供访问验证和会话管理(SESSION).例如:使用校验点恢复通信.常见:服务器验证用户登录,断点续传. |
传输层 | 提供应用进程之间的逻辑通信.例如:建立连接,处理数据包错误,数据包次序.常见:TCP,UDP,SPX,进程, 端口(socket). |
网络层 | 为数据在结点之间传输创建逻辑链路,并分组转发数据.例如对子网间的数据包进行路由选择.常见:路由器,多层交换机, 防火墙, IP, IPX, RIP, OSPF. |
链路层 | 在通信的实体间建立数据链路连接,例如:将数据分帧, 并处理流控制,物理地址寻址,重发等.常见:网卡(MAC), 网桥,二层交换机等 . |
物理层 | 为数据设备提供原始比特流的传输的通路.例如:网络通信的数据传输介质,由电缆与设备共同构成.常见:中继器, 集线器, HUB, RJ-45标准. |
网络协议
链路层和物理层 | 描述 |
---|---|
ARP(地址解析协议) | IP地址——->MAC地址 |
RARP | MAC地址——>IP地址(逆向的) |
PPP协议 | 拨号协议GPRS/3G/4G之前电话通话电话线上网的时候通过这个协议,现在用手机无线的也是一样 |
MAC地址 | 48位全球唯一,网络设备的身份识别 |
网络层 | 描述 |
---|---|
IP协议 | IP:(分为IPV4(168….)和IPV6(16进制用:隔开)) |
ICMP(Internet控制管理协议) | ping命令属于ICMP |
IGMP(Internet分组管理协议) | 广播,组播 |
传输层 | 描述 |
---|---|
TCP(传输控制协议) | 面向连接,可靠,效率低,一对一的可靠数据传输的协议 |
UDP(用户数据报协议) | 面向无连接,不可靠,效率高,提供不可靠的数据尽力传输 |
SCTP | 是可靠传输,是TCP的增强版,它能实现多主机,多线路的通信 |
应用层 | 描述 |
---|---|
网页访问协议 | HTTP HTTPS(S是安全) |
邮件发送接收协议 | POP3(收)/SMTP(发),IMAP(可接收邮件的一部分)(QQ或者微信的邮件提醒,没下载整个文件但是能显示邮件的一部分,能处理邮件) |
FTP | 文件传输协议 |
Telnet(明文传输)/SSH(安全) | 远程登录 |
嵌入式 | 描述 |
---|---|
NTP | 网络时钟协议(以前诺基亚关机一定时间就得重新设置时间,很多嵌入式设备需要加进去的) |
SNMP(开源(SNMP.NET)) | 简单网络管理协议(实现对网络设备集中式管理)比如路由,家里的路由登陆网页可以直接设置,但是如果在一个小区里安装了很多路由,一个一个改很麻烦,利用这个协议可以集中管理设置 |
RTP/RTSP | 用传输音视频传输(监控等) |
中继系统
中继系统(Relay System),Relay 是接力的意思,4* 100米接力比赛,每一位选手在100米的赛程内速度达到峰值,体力开始下降,于是把接力棒交给下一个选手,就这样一个个传下去,在赛程内全程极限速度,冲击人类速度的巅峰。
中继系统之集线器
光纤、双绞线随着传输距离的增大,信号会衰减(类似人体体力下降),为了避免信号衰减到不可用,需要有中继系统将信号复原、放大并传输出去,以此方法可以将信号传输得更远。比如北京到上海光传输网络,每隔几十公里需要有中继系统来接力。
这种中继系统类似Hub(集线器)的功能,从入口接收到信号,做信号复原、放大,然后再将信号从出口发送出去,这种中继系统是物理层设备,或一层设备。
中继系统之交换机
还有一种中继系统,网桥,现在称二层交换机,它比Hub、集线器高明的地方是:有记忆功能。二层交换机会记忆每个端口连接主机的MAC地址,那怎么记忆呢?
交换机在某个端口接收到一个以太网帧(二层称帧,Frame),会读取以太网帧头部的Source MAC,然后把这个Source MAC与端口号联系起来,放在一张表里:MAC Address Table,以此方法交换机可以学习到每个端口所对应的MAC地址,接下来如果交换机接收到一个帧,会检查Destination MAC 与MAC Address Table 进行匹配,如果匹配到某个MAC地址,就从那个MAC地址对应的端口发送出去。
如果没有匹配到任何一个表相,则从所有的端口(除了接收端口)发送出去,这就是通常所说的泛洪(flooding),流量的流速为10Mbps,如果需要泛洪到47 个端口,一共会产生47* 10= 470 Mbps 的泛洪流量,所以泛洪对交换机的影响是非常大的,尽可能避免泛洪流量。
中继系统之路由器
路由器是三层设备(网络层/IP层),顾名思义,它可以读取IP包头(三层称包,Packet)任何信息,读取目的IP地址信息,查询路由表,依据最长匹配原则,将IP包接力到更靠近目的地IP的下一跳路由器。
端口
IP能锁定一台物理机器,对应一张网卡,外界发来的数据包网卡都会接受,但是问题来了,网卡给程序提供了接口,你监听一下我,要是问题来了,我就转发给你.这样应用程序就能收到程序了.但是问题来了,程序A和程序B都需要监听网卡接发数据,网卡说那我把接到的数据都发给你两,你们自己看着办吧.好,小A小B都接受了,但是又来了CDEF….., 不行了,每个包都被发到了所有应用程序,每个应用程序都累得不行,最终垮了.好,那网卡说我给你们加个表示吧,我们之间可以用一个号码来作为标识,我和小A之间就用1标识如果外界发给1号标识的数据我就转发给你,你监听我的时候得告诉我你监听的时1,我就转发1的数据包给你。好了其他的BCD…都自己弄一个标识号,只要不重复就行。这样大家都省事了。最后设计到安全,一个标识号只能被一个应用程序监听,因为如果小A程序和小B同时监听一个标识号号,那就坏了,我传的数据都被AB接到,这样数据安全性就没办法保证了。
这个标识号就是端口,其实网卡都是被系统层封装了,端口和进程之间的关系也是系统封装好的。我们只需要用socket就行,给定一个端口号就行了。其他的事都交给操作系统去做。
socket
socket(套接字)是一种通用的网络编程接口,和网络层没有一一对应的关系.
arp协议
因为ip数据包是在以太网数据包里发送, 所以我们必须同时知道两个地址, 一个是对方的MAC地址, 另一个是对方的IP地址, 通常情况下, 对方的IP地址是已知的, 但是我们不知道它的mac地址.
所以, 我们需要一种地址, 能够从ip地址得到mac地址.
这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的”网关”(gateway),让网关去处理。
第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个”广播”地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。
总之,有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。
路由Routing
跨网络通信就需要使用路由,通过路由器将数据包从一个网络发往另一个网络.
路由器上维护着路由表,他知道如何将数据包发往另外的网络.
windows使用route print, liunx使用route -n可以查看路由表.
路由器所有端口都有使用自己的IP地址, 这些IP地址往往处在不同的网络, 所以,路由器连接了不同的网络.路由表中记录着路由设备所有端口对应的网络,分为静态, 动态配置.
静态路由:有管理员手动配置的固定的路由信息
动态路由:网络中的路由器,根据实时网络拓扑变化,相互通信传递路由信息,利用这些路由信息通过路由选择协议动态计算,并更新路由表.常见的协议有RIP, OSPF等.