关于TCP/IP与OSI模型基础学习
§·OSI七层模型介绍
OSI(Open system interconnection 开放系统互联),七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。OSI 七层模型是一种框架性的设计方法 ,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能使就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
§·OSI七层模型模型优点
建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来:
服务说明某一层为上一层提供一些什么功能,
接口说明上一层如何使用下层的服务,
而协议涉及如何实现本层的服务;
这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。网络七层的划分也是为了使网络的不同功能模块(不同层次)分担起不同的职责,从而带来如下好处:
● 减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错;
● 在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种低层协议上运行;
● 能有效刺激网络技术革新,因为每次更新都可以在小范围内进行,不需对整个网络动大手术;
● 便于研究和教学。
◎·一.物理层(Physical Layer)
O S I 模型的最低层或第一层,该层包括物理连网媒介,如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面P C 上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。 用户要传递信息就要利用一些物理媒体,如双绞线、同轴电缆等,但具体的物理媒体并不在OSI的7层之内,有人把物理媒体当做第0层,物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型、传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是bit比特。
◎·二.数据链路层(Datalink Layer)
OSI模型的第二层,它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。
数据链路层的功能独立于网络和它的节点和所采用的物理层类型,它也不关心是否正在运行 Wo r d 、E x c e l 或使用I n t e r n e t 。有一些连接设备,如交换机,由于它们要对帧解码并使用帧信息将数据发送到正确的接收方,所以它们是工作在数据链路层的。
数据链路层(DataLinkLayer):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。
数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
◎·三.网络层(Network Layer)
O S I 模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。
网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B 的最佳路径。由于网络层处理,并智能指导数据传送,路由器连接网络各段,所以路由器属于网络层。在网络中,“路由”是基于编址方案、使用模式以及可达性来指引数据的发送。
网络层负责在源机器和目标机器之间建立它们所使用的路由。这一层本身没有任何错误检测和修正机制,因此,网络层必须依赖于端端之间的由D L L提供的可靠传输服务。
网络层用于本地L A N网段之上的计算机系统建立通信,它之所以可以这样做,是因为它有自己的路由地址结构,这种结构与第二层机器地址是分开的、独立的。这种协议称为路由或可路由协议。路由协议包括I P、N o v e l l公司的I P X以及A p p l e Ta l k协议。
网络层是可选的,它只用于当两个计算机系统处于不同的由路由器分割开的网段这种情况,或者当通信应用要求某种网络层或传输层提供的服务、特性或者能力时。例如,当两台主机处于同一个L A N网段的直接相连这种情况,它们之间的通信只使用L A N的通信机制就可以了(即OSI 参考模型的一二层)。
◎·四.传输层(Transport Layer)
O S I 模型中最重要的一层。传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。例如,以太网无法接收大于1 5 0 0 字节的数据包。发送方节点的传输层将数据分割成较小的数据片,同时对每一数据片安排一序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即被称为排序。
工作在传输层的一种服务是 T C P / I P 协议套中的T C P (传输控制协议),另一项传输层服务是I P X / S P X 协议集的S P X (序列包交换)。
◎·五.会话层(Session Layer)
负责在网络中的两节点之间建立、维持和终止通信。 会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。
你可能常常听到有人把会话层称作网络通信的“交通警察”。当通过拨号向你的 ISP (因特网服务提供商)请求连接到因特网时,ISP 服务器上的会话层向你与你的 PC 客户机上的会话层进行协商连接。若你的电话线偶然从墙上插孔脱落时,你终端机上的会话层将检测到连接中断并重新发起连接。会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限
◎·六.表示层(Presentation Layer)
应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方案进行格式化;这种格式化也因所使用网络的类型不同而不同。
表示层管理数据的解密与加密,如系统口令的处理。例如:在 Internet上查询你银行账户,使用的即是一种安全连接。你的账户数据在发送前被加密,在网络的另一端,表示层将对接收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。
◎·七.应用层(Application Layer)
应用层也称为应用实体(AE),它由若干个特定应用服务元素(SASE)和一个或多个公用应用服务元素(CASE)组成。每个SASE提供特定的应用服务,例如文件运输访问和管理(FTAM)、电子文电处理(MHS)、虚拟终端协议(VAP)等。CASE提供一组公用的应用服务,例如联系控制服务元素(ACSE)、可靠运输服务元素(RTSE)和远程操作服务元素(ROSE)等。主要负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。
◎·简版:
1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
2.数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
3.网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
4.传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
5.会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
6.表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
7.应用层: 是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
§·TCP/IP四层模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。
TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
1 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
2传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
3互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
4 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
※·三次握手第一次
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
疑问:客户端与服务器通信,是何时知道需要使用TCP连接,何时开始三次握手(肯定是传数据之前),那如何识别上层把数据封装好可,传给 传输层 ,
§·TCP/IP四层逻辑图
※·TCP/IP与OSI参考模型对比
TCP/IP是我们实际使用的应用,OSI七层模型可供学习和教学
§·TCP/IP四层逻辑图每层数据封装图解
数据链路层为——数据帧
Internet(互联网)层为——IP报文
传输层——TCP/UDP数据段
※·抓包工具:wireshark 1.12.7版本
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层的数据段头部信息
Hypertext Transfer Protocol: 应用层的信息
※·数据链路层格式组成
以太网帧的格式组成:我们对比两种帧格式: Ethernet 与 IEEE802.3 的简单区别。
以太网Ethernet字段 |
字段长度(字节) |
目的 |
对应数值 |
|
Preamble (前导码) |
8 |
|||
目标MAC地址 |
6 |
指定接受方MAC地址 |
b0-25-aa-17-0f-15 |
|
源MAC地址 |
6 |
指明发送方MAC地址 |
00:0c:29:42:59:60 |
|
type(类型) |
4 |
上层数据类型 |
ip (0x0800 ) |
|
数据后填充 |
46-1500 |
数据 |
||
帧校验序列(FCS) |
4 |
数据校验生成的校验码,错误就丢弃此帧 |
||
合计最小字节数为: |
28字节 |
注意:如果帧小于61字节,则要求”填充“,让这个帧达到最小长度为 64字节
※·IP报文
IP报文格式 |
字段长度 |
对应数值 |
|
ver (IP版本号) |
4位 |
IP V4 |
|
IHL(首部长度) |
4位 |
20字节 |
|
tos(服务类型) |
8 |
||
total_len(数据包长度) |
16 |
||
ident(标识) |
16 |
15747 |
|
flags(标志) |
3 |
0x02 |
|
(片内偏移) |
0 |
||
ttl(生存周期) |
8 |
64 |
|
proto(协议TCP UDP或其他) |
8 |
TCP (6) |
|
checksum(报头校验和) |
16 |
0X0000 |
|
sourceIP(源地址) |
32 |
10.1.16.1 |
|
destIP(目标地址) |
32 |
10.1.16.61 |
|
选项 |
|||
填充 |
|||
合计: |
※·TCP数据段格式
TCP报文格式 |
字段位数 |
对应数值 |
|
SourPort 源端口号 |
16 |
55425 |
|
DestPort 目的端口号 |
16 |
22 |
|
SequNum 序列号 |
32 |
1822 |
|
AcknowledgeNum 确认号 |
32 |
2534 |
|
HeaderLen TCP头长度 |
4 |
20 |
|
resv 保留 |
6 |
||
Flag 标志位 |
6 |
ACK位1 |
|
WindowSize 窗口大小 |
16 |
16203 |
|
CheckSum 检验和 |
16 |
64812 |
|
urgentPointer 紧急数据偏移量 |
16 |
0 |
※·UDP数据段格式
UDP报文格式 |
字段位数 |
对应数值 |
|
SourPort 源端口号 |
16bit |
8000 |
|
DestPort 目的端口号 |
16bit |
8706 |
|
Length 数据包长度 |
16bit |
55 |
|
CheckSum 校验和 |
16bit |
0x9529 |
※·1.通过抓包工具分析TCP三次握手
连接由于SSH是使用TCL协议的,所以应该有三次握手的界面,上图中就有相关的信息,由于排除了部分不需要数据,导致编号不是连续的,不过还是值得我们去了解的。
◎·TCP握手第一次
#客户端发送 带Seq 为0 ,ack为0 的数据包发往服务器
#客户机发送信息后,处于 SYN_SENT状态,等待服务器发回的SYN_ACK包
注:frame物理层数据概括:该包为66个字节,包含所有的数据(不过好像这个数字有问题,现在不讨论)。
◎·TCP握手第二次
服务器回应客户机的序列号0 ,发给客户机ack为1的数据包
#客户机收到服务器发过来的确认 sequence number :0 acknowledgment number :1
#服务器发送SYN_ACK的后,服务器处于 SYN_RECV状态
◎·TCP握手第三次:
#客户机回应服务器的序列号0 ,发给服务器的ack为1的数据包,客户机处于ESTABLISHED状态。
#服务器收到客户机发送的信息,也处于ESTABLISHED状态,就可以传送数据了。
小结:
以上通过抓包简单的分析了,有很多的选项不太清楚,还有待慢慢研究与学习,不过也了解了一些术语方面的知识。
原创文章,作者:linux_root,如若转载,请注明出处:http://www.178linux.com/42873
评论列表(1条)
文档功底相当不错,也非常认真,很出彩,加油