开发者社区> 技术小阿哥> 正文

网络基础知识(1)====OSI七层模型

简介:
+关注继续查看

我真的不知道用什么样的语言来整理我学过的网络知识,如果说是理论知识,百度百科上一搜一大堆,我希望我整理的东西在生活中都能找到模板,贴近生活,源于生活。

网络我们都很熟悉,无论是qq 微信等社交软件还是游戏,我们都离不开网络,网络贯穿我们生活的点点滴滴,而且今天成熟的网络系统,都是由传统的网络一点一点发展而来的。

带着问题去思考,我们都知道OSI七层,那么什么叫做层,为什么要分层?分层有有什么优势?为什么每一层有对应的不同的协议?

层:描述了所有需求上的有效通讯过程,我们把这些过程叫做层。

wKioL1nQPNThc_AiAAJVqgmIMCQ962.png-wh_50

为什么要分层?

这就像一个公司,刚开始公司人很少,随着公司规模的扩大,我们就要划分各个部门来实现各部门的作用,网络经过长期的发展,日益成熟与健壮,人们就逻辑的给划分为七层,来让每一层实现每一层的作用,来形成一个完善的网络系统。

分层的优势?

把复杂的网络划分成易于管理的层,易于排错,创造更好的集成环境,低层为上层提供服务。(什么是低层,什么是高层见上图)

为什么每一层有每一层对应的设备和协议?

设备和协议是相关的,因为有网络的发展带动了生产不同设备的厂商,主要就是路由器和交换机,刚开始它们各自的厂商有自己的标准,导致不同厂商设备之间不能通信,例如可能戴尔的路由器就不能和联想的通信,这就导致网络的通信遇到了很多的阻碍,所以为了形成统一的标准,就出来了标准协议,各个厂商就必须遵守的一个协议。

这就类似普通话,协议只是为了达成一个公认的统一的标准。

由上层协议开始介绍OSI七层:


应用层(用户接口)

应用层一般都是应用程序:qq 浏览器 邮箱(专门针对具有通信功能应用程序的一层)

简单说一个具有通信功能的应用程序就是应用层一个用户的接口(不叫端口,端口是相对传输层而言的)。

常用协议:telnet  http  smtp ftp 


表示层(没有协议,只是把应用层给细致划分)

上层数据表示加密等特殊处理过程,定义数据格式及加密。


会话层(没有协议,只是把应用层给细致划分)

保证不同应用(应用程序)间的数据区分。

例如:你打开一个qq 和一个浏览器,你就有两个应用程序,但是你qq聊天中的内容只在qq中呈现,不可能在浏览器中呈现,这就是会话层给做了一个数据的区分。

如果了笼统一点,这三层可以统称为应用层


下面介绍下层协议(设备都是硬件设备)

物理层

最底层,发送或接收比特流。

比特流是什么,我们都知道计算机的世界里只有0和1,这都是相对于物理层来说的。1B=8b,1MB=1024kB  B(字节) b(比特位,表示0 1)

例如:00101011  就是8比特位,1字节

流是什么意思,就是很多,例如水流,所以网线里面传的就是很多很多的0和1叫比特流。

硬件设备:  网线网卡,光纤,电缆


数据链路层

作用:将比特流转换成数据帧,负责成帧

在这层数据都叫帧

典型设备:交换机

协议数据单元:帧

有设备就有协议,数据链路层的协议:ppp HDLC ATM Ethernet(以太网,包括802.3  802.2) FR(帧中继)


交换机的工作原理

交换机接收数据帧(到了交换机的数据都封装成了数据帧,交换机只接收数据帧,里面有源MAC地址,和目的MAC地址),根据源MAC 地址更新MAC 地址表,根据目标MAC 地址做出转发决定。

如果是已知单播或广播帧,则直接由已知端口转发,如果是未知,则除了接收帧的接口以外的接口全部转发,称为泛洪。这时候接收到的计算机就会给交换机一个相应(告诉交换机我就是拥有目的地址的那台计算机),这时候交换机中就会多一条记录,MAC 地址和端口的对应关系,但是这条记录是动态的,老化时间300秒,这条记录只存300秒。


MAC 地址相当于交换机内部一个数据库,记录着MAC地址和接口编号的对应关系

交换机查看MAC 地址表 show mac-address-table

以太网(这一层一个重要的协议)帧格式:

wKioL1nQYBTSPSNhAAN_l13YtW8946.png-wh_50

*****网络层(点到点的通信)


决定路径的逻辑寻址,实现不同网络间的通信

设备:路由器

协议:ip arp icmp (ping 命令)

协议数据单元(pdu):包

这几个协议很重要很重要,ip是个泛指,互联网协议。ip协议的格式:

wKiom1nQYs_ioBZMAAEAVCH6IFY585.jpg-wh_50

arp 的作用:将ip地址解析成MAC地址,是计算机通信的桥梁,很重要,因为ip只是确定的一个范围,MAC地址才是每台计算机的唯一标识。ip地址为什么只确定一个范围呢?这是由路由表决定的,路由表里面只有网段和端口的对应。ip就相当于你在哪个班,MAC就相当于你是这个班里的哪个人。

***传输层(端到端的通信)

协议:TCP UDP

设备:无

作用:可靠或不可靠的数据传输,数据重传前的数据纠正。

TCP 是可靠的,面向连接的数据传输,UDP 是不可靠的,不面向连接的数据传输。

为什么这么说?为什么说可靠?为什么说面向连接?

TCP 经历三次握手,四次断开的过程。


TCP的数据格式:

wKioL1nQa7SwbFT2AASWX1E0OpE862.png-wh_50



UDP的数据格式

wKiom1nQbf_SR5m4AALj5XHVhRE687.png-wh_50

比较源端口号或目的端口号,我们发现UDP 会比TCP 少很多东西,没有序号没有确认序号,没有标记字段,重要的都没有。

一些重要标记字段的作用:

RST:重新连接

FIN:请求断开

SYN:请求建立连接

ACK:确认序列号

端口的概念:范围(0~65535)

wKioL1nQbArg1pkzAAV48JXpt_s297.png-wh_50

三次握手的过程:

wKiom1nQbL3DNBMxAARJoWXWDAE651.png-wh_50


为什么说TCP可靠呢?

因为它麻烦,就像你的微信换台设备登录一样,就要经过旧的设备认证,确认机制比较多,所以安全。TCP 也是同样的道理,因为它的确认机制比较多,所以安全可靠。

什么是面向连接?

面向连接是指依赖于发送方和接收方显示通信或阻塞来管理数据连接。

三次握手语言描述:

TCP 的连接是一个非常谨慎的过程,A和B 说我请求连接,但是计算机和人不一样,B怎么样来区分你说的这句话是用来请求连接的?是不是A给B 发了一个标记字段,并且发了一个序号seq=A,这时候B 就给A发了一个确认序列号,代表我同意,所以ack=A+1(确认序列号都是源序号加1),还给A发了一个他自己的序号seq=B;这时候还没完,当A收到B的回复以后就开始建立会话,当在建立回话的时候seq=A+1;用来表示这是A主机和B说的第二句话,ack=B+1:(ack的确认永远是确认的对方的)

四次断开示意图:

wKioL1nQgGjRHCT6AAA5l6PfM5I218.jpg-wh_50

三次握手,四次断开主要是因为TCP协议的格式中有标记字段,UDP没有。

TCP(传输控制协议)  UDP(用户数据协议)

TCP UDP的协议格式都存在端口号,有时候我们会说web服务--http协议--tcp--80端口

http协议指的是应用层协议,tcp 指的是在这个协议传输层的传输形式,80端口是在传输层的端口号。

这时候可能就已经十分懵逼了,总结下,ip用来说明一个范围,例如一个班级,MAC 用来标识特定的主机,例如一个班级的某一个人,端口号用来确定这台计算机上的一个应用,例如一个班上的一个人的一只手。

所以说只要有提供服务的客户端软件,就有一个应用层协议,当经过传输层时就有端口号,但是数据有两种情况,要么走TCP,要么走UDP.

端口号的介绍:

wKiom1nQhQmDwHEdAAMTo3Od9rA028.png-wh_50

比如说Telent协议,当数据传输时源端口号是任意一个,目的端口号是23.


大概OSI七层就介绍完了,但是在实际生产中可能不会划分的这么细,所以人们也习惯性的说TCP/IP五层:

网络接口层、互联网层、主机到主机层、应用层。

wKioL1nQhfmytgAIAAQhmpkdp6s072.png-wh_50

wKiom1nQhySCHFeiAAPNlcrYUcw431.png-wh_50

wKioL1nQhxKgayd5AAMpsWs8Py8094.png-wh_50


我自己画了一张图来表示我对这七层的理解

wKiom1nQivLieJlTAAG0HTkhIxk040.png-wh_50

总结:

常用服务 协议 端口

    1. POP3 TCP 110

    2.   IMAP TCP 143

    3.   SMTP TCP 25

    4.   Telnet TCP 23

    5.   终端服务TCP 3389

    6.   TFTP UDP 端口69

    7.   HTTP TCP 80

    8.   NTP UDP 端口123

   9. HTTPS TCP 443

    10. FTP 控制TCP 21 FTP 默认数据TCP 20

    11. RADIUS UDP 1645

    12. DHCP 服务器UDP 67

   13.   DNS UDP 53 DNS TCP 53

    14.   SNMP UDP 161

    15   ipsec UDP 500

    16 PPTP   TCP 1723

     17 L2TP UDP 1701

代理服务器常用以下端口:

(1). HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080

(2). SOCKS代理协议服务器常用端口号:1080

(3). FTP(文件传输)协议代理服务器常用端口号:21

(4). Telnet(远程登录)协议代理服务器常用端口:23

 

HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口);

HTTPS(securely transferring web pages)服务器,默认的端口号为443/tcp 443/udp;

Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口);

FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口);

TFTP(Trivial File Transfer Protocol ),默认的端口号为69/udp;

SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp;

SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口);

POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp;

WebLogic,默认的端口号为7001;

Webshpere应用程序,默认的端口号为9080;

webshpere管理工具,默认的端口号为9090;

JBOSS,默认的端口号为8080;

TOMCAT,默认的端口号为8080;

WIN2003远程登陆,默认的端口号为3389;

Symantec AV/Filter for MSE ,默认端口号为8081;

Oracle 数据库,默认的端口号为1521;

ORACLE EMCTL,默认的端口号为1158;

Oracle XDB(XML 数据库),默认的端口号为8080;

Oracle XDB FTP服务,默认的端口号为2100;

MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp;

MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp;


本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1970088,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Flink之CEP案例分析-网络攻击检测
上一篇我们介绍了Flink CEP的API,这一篇我们将以结合一个案例来练习使用CEP的API编写应用程序,以强化对API的理解。所选取的案例是对网络遭受的潜在攻击进行检测并给出告警。当下互联网安全形势仍然严峻,网络攻击屡见不鲜且花样众多,这里我们以DDOS(分布式拒绝服务攻击)产生的流入流量来作为遭受攻击的判断依据。
2783 0
智能投顾中的基础核心,华尔街老司机手把手教你搭建智能资产配置模型
在不同的模型当中有不同的实现方式。下一节课要讲的BL模型有其他的实现方式,而在今天讲的马克维兹模型当中,通过引入一个用户的风险偏好的变量,这个变量是一个非负数的实数。
1599 0
13692
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载