OSI模型分层
| 序号 | 分层名称 | 功能 |
| 7 | 应用层 | 为应用程序提供服务并规定应用程序中通信的相关细节. |
| 6 | 表示层 | 将应用层数据转换为适合网络层传输的数据格式;或将会话层的数据转换为应用层能处理的格式. |
| 5 | 会话层 | 负责建立和断开通信连接,负责管理传输层以下的分层. |
| 4 | 传输层 | 在通信节点上进行传输,确保数据被可靠的传输到目标地址.(将数据传输比作人出远门,那么传输层负责就是从一个车站到下一个车站的传输) |
| 3 | 网络层 | 将数据帧传输到目标地址(目标地址可以是多个网络通过路由器连接而成的一个地址),主要负责寻址和路由的选择.(将数据传输比作人出远门,那么网络层负责的是从始发地到目的地的整体过程传输) |
| 2 | 数据链路层 | 负责将0或1划分为具有意义的数据帧(数据帧的生成与接收). |
| 1 | 物理层 | 负责0或1比特流与电压高低,光的闪烁之间的互换. |
各个层的详细说明
TCP/IP中对于OSI参考模型的数据链路层以及以下部分(物理层)未做定义,因为TCP/IP以这两层的功能是透明的为前提.然而,数据链路的知识对于深入理解TCP/IP与网络起着至关重要的作用.
1.物理层
计算机是以二进制0或1来表示信息,然而实际的通信媒介之间处理的是电压的高低,光的闪灭以及电波的强弱等信号,把这些信号与二进制0或1进行转换的的正是物理层.主要编码方式:
- 曼彻斯特编码 :
由高到低表示0;由低到高表示1.- NRZ(Non-Return to Zero) :
0表示高1表示低;或者1表示低0表示高.- NRZI(Non-Return to Zero Inversion) :
不变的时候表示0,变的时候表示1.- MTL-3(Multi Level Transmission) :
不变的时候表示0,变的时候表示1.
2.数据链路层
数据链路层的协议定义了用过通信媒介互连的设备之间传输的规范.通信媒介包括双绞线电缆,同轴电缆,光纤,电波以及红外线等介质.此外各个设备之间有时也会通过交换机,网桥,中继器中转数据.主要涉及的方面:
-
MAC地址 :
MAC地址用与识别数据链路层中互连的节点.MAC地址一般用十六进制表示.MAC地址长48比特.第1位表示”单播地址(0)/多播地址(1);第2位表示全局地址(0)/本地地址(1);第3~24位表示厂商识别码(由IEEE管理并保证各厂商之间不重复);第25~48位表示厂商内识别码(由厂商管理保证产品之间不重复)
-
争用方式(共享介质型网络介质访问控制方式) :
这种方法通常令网络中的各个站才用先到先得的方式占用信道发送数据,如果多个站同时发送帧,则会产生冲突现象.也会因此导致网络拥堵与性能下降.
-
令牌传递方式(共享介质型网络介质访问控制方式) :
令牌传递方式是沿着令牌环发送一种叫做”令牌”的特殊报文,是控制传输的一种方式,只有获得令牌才能发送数据.这种方式有两个特点:一是不会有冲突,二是每个站都有通过平等循环获得令牌的机会,因此即使网络拥堵也不会导致性能下降.
-
交换机(非共享介质型网络介质访问控制方式) :
非共享介质网络是指不共享介质,是对介质采取专用的一种传输方式.在这种方式下,网络中的每个站直连交换机,由交换机负责发送数据帧.此方法有一个致命的弱点,一旦交换机发生故障,与之连接的所有计算机之间都无法通信.
-
最常用的数据链路—以太网(Ethernet) :
来源与Ether(以太),译为介质.规范简单,易于NIC(网卡)以及驱动程序实现,以太网网卡相对于其他网卡也比较便宜.`
-
常用的无线通信技术 :
无线PAN(Personal Area Network),无线LAN(Local Area Network),无线MAN(Metropolitan Area Network),无线RAN(Regional Area Network),无线WAN(Wide Area Network);依次对应蓝牙,Wi-Fi,WiMAX,暂无,3G/4G等.`
-
PPP(点对点) :
PPP可以使用电话线或ISON,专线,ATM线路.此外近些年人们更多的是在使用ADSL或有线电视通过PPPoE(PPP over Ethernet.是在以太网的数据中加入PPP帧进行传输的一种方式)实现互联网接入.主要的PPP协议有LCP和NCP.
TCP/IP协议分层
| 序号 | OIS分层名称 | TCP/IP分层协议或传输方式 | TCP/IP分层名称 |
| 7 | 应用层 | DNS,URI,HTML,HTTP, TLS/SSL,SMTP,POP.IMAP, MIME,TELNAT,SSH,FTP SNMP,MIB,SIP,RTP,LDAP |
应用程序 |
| 6 | 表示层 | ||
| 5 | 会话层 | ||
| 4 | 传输层 | TCP,UDP,UDP-Lite,SCTP,DCCP | 操作系统 |
| 3 | 网络层 | ARP,IP,ICMP | |
| 2 | 数据链路层 | 网卡层 | 设备驱动程序与网络接口 |
| 1 | 物理层 | 硬件 |
3.网络层(IP协议以及相关技术)
MAC地址是用来标识同一个链路中不同计算机,也就是说MAC地址是数据链路层的地址.IP是网络层的地址,IP地址用于在连接到网络中的所有主机中识别出进行通信的目标地址.所有主机都维护着一张路由控制表,这个表记录着IP数据在下一步应该发送给哪个路由器.
不同的数据链路最大的区别就是它们各大的传输单位不同,为了解决这个问题,IP进行分片处理,将较大的IP包分成多个较小的IP包进行传输,传输到目的地之后再重新组合起来发送给上一层.这样就抽象了数据链路层,使得从上层更不容易看到底层网络构造的细节.
IP属于面向无连接的协议,数据的可靠性主要依靠上一层的TCP采用面向有连接.
IP地址的定义 :
IP地址(IPv4地址)由32位二进制正整数来表示,10进制的标记方式是,将32位的IP地址以每8位为一组,分成4组,每组以”.”隔开,再将每组都转换为10进制数.
IP地址的分类 :
IP地址由网络和主机两部分标识组成.IP地址分为四个级别,分别为A类,B类,C类,D类.
IP地址类型 开头首位 网络地址 可容纳主机数上限 A类 0 0.0.0.0~127.0.0.0 16777214 B类 10 128.0.0.0~191.255.0.0 65534 C类 110 192.0.0.0~223.255.255.0 254 D类 1110 224.0.0.0~239.255.255.255 无主机标识
广播地址 :将IP地址中的主机地址全部设置为1就成了广播地址.
广播分为本地广播和直接广播
子网掩码 :
一个IP地址只要确定了其分类,也就确定了它的网络标识和主机标识,所以直接使用A,B,C类地址就更加显得浪费,为了避免分类造成浪费,就出现了子网掩码.”子网掩码”通过子网网络地址细分出比A,B,C类更小的粒度的网络.子网掩码也是一个32位的数字,它对应IP地址网络标识部分的位全部为1,对应主机部分全部为0.
IPv6是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议,IPv4的地址长度为4个8位字节,即32比特,而IPv6的地址长度则是原来的4倍,即128比特,一般写成8个16位字节,也用8个16进制数表示.
广播分为本地广播和直接广播
4.传输层(TCP和UDP协议)
TCP协议头部的格式:
Source Port和Destination Port:分别占用16位,表示源端口号和目的端口号;用于区别主机中的不同进程,而IP地址是用来区分不同的主机的,源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能唯一的确定一个TCP连接;
Sequence Number:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节在数据流中的序号;主要用来解决网络报乱序的问题;
Acknowledgment Number:32位确认***包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志(下面介绍)为1时该确认***的字段才有效。主要用来解决不丢包的问题;
Offset:给出首部中32 bit字的数目,需要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能表示15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部。然而,没有任选字段,正常的长度是20字节;
-
TCP Flags:TCP首部中有6个标志比特,它们中的多个可同时被设置为1,主要是用于操控TCP的状态机的,依次为URG,ACK,PSH,RST,SYN,FIN。每个标志位的意思如下:
- URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;
- PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;
- RST:这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包;
- SYN:表示同步序号,用来建立连接。SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1,ACK=0;连接被响应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来 ,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手;
- FIN: 表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。