OSI七层网络协议及TCP/UDPC/S架构详解

Posted Alex、WY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSI七层网络协议及TCP/UDPC/S架构详解相关的知识,希望对你有一定的参考价值。

OSI七层网络协议及TCP/UDP、C/S架构详解

一、OSI七层网络、Linux四层网络模型

1、为什么需要网络通信

进程间通讯解决的是本机内的通讯,而网络通信解决的是任意不同机器间的通讯

2、通讯设备有哪些

网卡:PC机自带
路由器,交换机
光纤、电缆、基站

3、什么是通信协议?作用是什么?

通信协议是指双方实体完成通信或者服务所必须遵循的规则和约定协议定义了 数据单元使用的格式,信息单元该包含的信息和含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传输到正确的地方。

作用是什么:在计算机通信中,通讯协议用于实现计算机与网络连接之间的标准,网络如果没有统一的通讯协议,电脑之间的信息传递就无法识别。

二、OSI七层协议

1、物理层

字面意思就是:物理传输、硬件、物理特性。在不同地方的人使用qq聊天,电脑必须得联网吧。那么在物理上就是要接根网线,再插个路由器。也就是说计算机与计算机之间的通讯,必须要有底层物理层方面的连接,类似于打电话,中间要插电话线一样。

物理层需要将通信介质的信号转换到数字信号(二进制0101)。然而如何使这些二进制位有具体意思呢?这就需要人为的分组,8位一组,发送及接收都按照8位一组来划分。如果没有分组的话,对方接收的计算机根本就不知道传过来的数据从哪位开始计算,那就解析不了这些数据了。因此要想让底层的数字信号有意义,那就必须将其分组。那么分组的活,哪层干呢?这时候就用到了数据链路层

2、数据链路层

很早之前,数据链路层就是用来对数字信号进行分组的。以前每个公司都有自己的分组方式,非常的乱。后来就形成了统一的标准(标准就是协议),也就是以太网协议Ethernet。

以太网协议规定:
一组数字信号称之为一个数据包,或者叫做一“帧”。

每一个数据包包含两部分:head报头、data数据两部分。
其中head包含:发送者(源地址,6个字节)、接收者(目标地址,6个字节)、数据类型(6个字节)。所以head报头固定是18个字节。

data包含:数据包的具体内容(最短46字节,最长1500字节)

head长度+data长度=最短64字节,最长1518字节,超过最大长度就分片发送。

在计算机通信中源地址和目标地址都是指的是mac地址。

Mac地址的由来:
以太网协议规定接入互联网的设备都必须具备网卡,发送端和接收端的地址便是指网卡地址,即Mac地址。

每块网卡出厂时都被烧录上一个实际上唯一的Mac地址,长度是48位2进制,通常由12位16进制数表示。有了mac地址以后,计算机就可以通信了。

交换机:
交换机是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路

交换机工作原理:
交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中
交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发
如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪(flood)

数据链路层将我的mac地址和接收者mac地址以及我发送的内容包装成一个数据包之后就往外发,到物理层以后就全部转换成二进制,那么怎么往外发呢?广播!计算机底层,只要在一个局域网中,都是靠广播。

什么是互联网,互联网就是由一个个局域网组成。局域网内计算机不管是对内还是对外都是靠广播,这就是数据链路层的工作方式——广播!
广播出去以后,所有计算机都能接收到,所有计算机都会拆开这个包,读发送者是谁,只要接收者mac地址不是自己就丢弃掉,而目标计算机接收到,就会将我需要的信息发送回来,同样采用的是广播方式。

然而当不在同一个局域网中时,如何通信呢?这就是跨网络进行通信,数据链路层就解决不了这个问题了。这时候就需要网络层出手了!

3、网络层

网络层定义了一个IP协议
IP地址,路由器(通过公网ip来访问全世界)
IP地址:实际上是32位二进制数(01100100.00000100.00000101.00000110)100.4.5.6
公网IP(广域网通信):
a类:1.0.0.1~126.255.255.254
** b类:128.0.0.1~191.255.255.254**
** c类:192.0.0.1~223.255.255.254**
d类:224.0.0.1~239.255.255.254
** e类:240.0.0.1~255.255.255.254**
A:10.0.0.0~10.255.255.255
** B:172.16.0.0~172.31.255.255**
** C:192.168.0.0~192.168.255.255**

4、传输层

传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,微信,等多个应用程序

那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

传输层功能:建立端口到端口的通信

补充:端口范围0-65535,0-1023为系统占用端口

A)TCP协议

TCP协议(传输控制协议):
特点:面向链接、可靠的字节流传输

字节流传输:优点:无需一次存储过大的数据占用太多内存。缺点:坏处就是无法知道这些字节代表的意义,导致粘包及拆包的问题

TCP的可靠传输:
停止等待协议:A给B发包,B回复收到,A继续发下一个包。每次发送都可能丢包,如果丢失,B永远无法回复A,A一直等待。

超时重传:
A发出包开始计时,若时间到未收到回复,则认为包丢失,再次发送、重传。若包没有丢失,等待时间较长。B会收到两个包,无法识别。

序号和确认号:
表示发送方数据第一个字节的编号,和接收方期待的下一份数据的第一个字节的编号

连续ARQ协议:
为什么要有连续ARQ协议:
停止等待满足可靠传输,但效率太低,等待过程中浪费资源
解决方法:
连续发送数据包,A源源不断的发送,B源源不断的接收,并逐一回复,累计确认:累积收到一定数量,回去之前的包全部收到。如果有包A未收到回复,那么重传
缺点:发送太快导致接收方无法接受,便频繁进行重传,浪费网络资源

如何处理丢包问题
选择确认SACK:在TCP报文的选项字段,可以设置已收到的报文段,每个报文段需要两个边界来进行确定

滑动窗口:
发送方需要根据接收方的缓冲区大小,设置自己的可发送的窗口大小,处于窗口内的数据表示可发送,之外的数据不可发送。
当窗口内的数据接收到确认回复时,整个窗口会往前移动,直到发送完成所有的数据当窗口内的数据接收到确认回复时,整个窗口会往前移动,直到发送完成所有的数据

可靠传输小结:
通过连续ARQ协议与发送-确认回复模式来保证每一个数据包都能到达接收方
通过给字节编号的方法来标记每个数据是属于重传还是新的数据
通过超时重传的方式来解决数据包在网络中丢失的问题
通过滑动窗口来实现流量控制
通过累计确认 + 选择确认的方法来提高确认回复与重传的效率

拥塞控制:
作用:避免网络过分拥挤导致丢包严重,网络效率降低

拥塞控制 VS 流量控制
流量控制是拥塞控制的手段:为了避免阻塞,必须对流量进程控制
拥塞控制的目的是:限制每个主机的发送的数据量,避免网络拥塞效率下降

解决方法:
拥塞控制的解决方法是流量控制,流量控制的实现是滑动窗口
拥塞控制最终于是通过限制发送方的滑动窗口大小来限制流量
拥塞控制的4个重点:慢开始、快恢复、快重传、拥塞避免

解决原理:
最开始的时候,会把窗口设置一个较小的值,然后每轮变为原来的两倍。这是慢开始
当窗口值到达ssthresh值,这个值是需要通过实时网络情况设置的一个窗口限制值,开始进入拥塞避免,每轮把窗口值提升1,慢慢试探网络的底线
如果发生了数据超时,表示极可能发生了拥塞,然后回到慢开始,重复上面的步骤
如果收到三个相同的确认回复,表示现在网络的情况不太好,把ssthresh的值设置为原来的一半,继续拥塞避免。这部分称为快恢复
如果收到丢包信息,应该尽快把丢失的包重传一次,这是快重传

面向链接:
链接:
链接不是实实在在的链接,而是通信双发彼此之间的一个记录
TCP是一个全双工通信,也就是可以互相发送数据,所以双发都需要记录对方的信息(源IP、源端口号、目标端口号)

1)三次握手

建立链接:
目的:交换彼此的信息,然后记住对方的信息

三次握手:
机器A发送syn包,向机器B请求建立TCP链接,并附加上自身的接收缓冲区信息等,机器A进入SYN_SEND状态,表示请求已经发送正在等待回复
机械B收到请求之后,根据机器A的信息记录下来,并创建自身的接收缓存区,向机械A发送syn + ack的合成包,同时自身进入SYN_RECV状态,表示已经准备好了
机器A收到回复之后记录机器B的信息,发送ack信息,自身进入ESTABLISHED状态,,表示已经完全准备好了,可以进行发送和接收
机器B收到ACK数据后,进入ESTABLISHED状态
三次消息的发送,称之为三次握手

拒绝服务攻击(DOS):
通过各种技术手段导致目标系统进入拒绝服务状态的攻击。
分布式拒绝服务攻击:
利用合理的请求曹成资源过载,导致服务不可用,从而曹正服务器拒绝正常流量服务。
SYN_Flood攻击:
就是让客户端不返回最后的ACK包,这就形成了半开连接,TCP半开连接是指发送或者接受了TCP连接请求,等待对方应答的状态,半开连接状态需要占用系统资源以等待对方应答,半开连接数达到上限,无法建立新的连接,从而造成拒绝服务攻击。

2)四次挥手

断开链接:
四次挥手:
机器A发送完数据之后,向机械B请求断开链接,自身进入FIN_WAIT_1状态,表示数据发送完成且已经发送FIN包(FIN标志位为1)
机械B收到FIN包之后,回复ack包,表示已经收到,但此时,机械B可能还有数据没发送完成,自身进入CLOSE_WAIT状态,表示对方已发送完成且请求关闭链接,自身发送完成之后可以关闭链接
机械B发送完数据后,发送FIN包给机器A,自身进入LAST_ACK状态,表示等待一个ACK包即可关闭链接
机器A收到FIN包之后,知道机器B也发送完成了,回复一个ACK包。并进入TIME_WAIT状态
机器A等待两个报文存货最大时长之后,机器B接收到ACK报文之后,均关闭链接,进入CLASED状态

TIME_WAIT状态:
当机器A收到机器B的FIN包时,理想状态下,确实是可以直接关闭链接了
问题1:当网络不稳定时,可能机器B放了一些数据还没到(比FIN包慢)
问题2:同时回复的ACK包可能丢失,机械B会重传FIN包
问题3:此时机械A马上关闭链接,导致数据不完整、机械B无法释放链接等问题|机器A收到FIN包之后,知道机器B也发送完成了,回复一个ACK包。并进入TIME_WAIT状态
解决方法:此时机器A需要等待两个报文生存最大时长,确保网络中没有任何遗留报文了,再关闭链接

3)粘包与拆包:

应用层需要向母校进程发送两份数据,一份音频,一份文本
TCP只知道接受到一个流,并把流拆分成4段进行发送
中间第二个报文的数据就出现两个文件的数据混在一起,称为粘包
目标进用层在接收到数据之后,需要把这些数据拆分成正确的两个文件,就是拆包
粘包与拆包都是应用层需要解决的问题,可以再每个文件的最后附加上一些特殊字符,如换行符

B)UDP

UDP协议(用户数据报协议):
无连接无可靠传输:
UDP传送数据前并不与对方建立链接,对接受的数据也不发送确认信号,发送端不知道数据是否会正确接受,不需要重发
UDP中的每个数据包都是一个独立的信息,包括完成的源或目的地址,他在网络上以任何可能的路径传目的地,对于能否达到目的地,达到目的地的时间以及内容的正确性都是不能被保证的
因为UDP不必进行收发数据的确认,而且资源消耗小,处理速度快,所以他的实时性更好,传送速率更高。

UDP的报文格式:
源端口、目标端口号:区分主机的不同进程
校验码:校验数据包在传输的过程中没有出现错误,例如某个1变成0
长度:报文的长度

UDP的功能:校验数据报是否发生错误,区分不同的进程通信

优点:
效率更快,无需建立链接以及拥塞状态
链接更多的用户,没有链接状态,不用为每个客户创建缓存等
分组首部字节少,开销小,TCP首部固定首部是20字节,而UDP只有8字节,更小的首部意味着更大比例的数据部分
在一些需要高效率允许的可限度误差的场景下可以使用,如直播场景
可以进行广播,UDP不是面向链接的,所以可以同时对多个进程进行发送报文。

缺点:
无法保证消息完整、正确到达,UDP是不可靠的传输协议
缺少拥塞控制,容易互相竞争资源,导致网络系统瘫痪

UDP适用场景:
视频直播、DNS、RIP路由选择协议

c)TCP VS UDP

链接方式:TCP是面向链接,而UDP是无连接

可靠性:
TCP是可靠传输,适用流量控制和拥塞控制
UDP是不可靠传输,不适用流量控制和拥塞控制

链接对象的数量:
TCP只能是一对一通信
UDP支持一对一,一对多,多对一和多对多交互通信

传输方式:TCP是面向字节流,UDP是面向报文

首部开销:TCP首部最小20字节,最大60字节,UDP首部开销小,仅8字节

适用场景:
TCP适用于要求可靠传输的应用,例如文件传输
UDP适用于实时应用(IP电话、视频会议、直播等)

5、会话层

控制发包的数据

6、表示层

文件格式

7、应用层

会话层、表示层、应用层在Linux中合为应用层

应用层
DNS(Domain Name System:域名系统):
作用:解决IP地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的域名到IP地址的映射
域名解析的顺序:浏览器缓存,找本机的hosts文件,路由缓存,找DNS服务器(本地域名、顶级域名、根域名)->迭代解析、递归查询

域名由点、字母和数字组成:
顶级域(com,cn,net,gov,org)
二级域(baidu,taobao,qq,alibaba)
三级域(www)

二、C/S架构

优点:
用于客户端实现与服务器的直接相连,没有中间环节,因此影响速度快
操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求
C/S结构的管理系统具有较强的事务处理能力,能实现复杂的业务流程

缺点:
需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序
开发成本较高,需要具有一定专业水准的技术人员才能完成

OSI七层与TCP/IP五层网络架构详解

OSI和TCP/IP是很基础但又非常重要的网络基础知识,简单的了解对开发有一定的帮助。

(1)OSI七层模型

OSI中的层 功能 TCP/IP协议族
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCP,UDP
网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

技术分享

技术分享

(2)TCP/IP五层模型的协议

应用层
传输层
网络层
数据链路层
物理层

物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层
数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)
网络层:路由器、三层交换机
传输层:四层交换机、也有工作在四层的路由器

技术分享

二、TCP/UDP协议

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复 用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、 流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要 有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系 统)、TFTP(通用文件传输协议)等.
TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点

三、OSI的基本概念
OSI是Open System Interconnect的缩写,意为开放式系统互联。
OSI七层参考模型的各个层次的划分遵循下列原则:
1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。
2、同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。
3、七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。
4、不同节点的同等层按照协议实现对等层之间的通信。

第一层:物理层(PhysicalLayer),
规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械 特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率 距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组 操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。在这一层,数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

第二层:数据链路层(DataLinkLayer):
在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

第三层是网络层
在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如 果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、RIP、OSPF等。

第 四层是处理信息的传输层
第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。

第五层是会话层
这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

第六层是表示层
这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

第七层应用层
应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

除了层的数量之外,开放式系统互联(OSI)模型与TCP/IP协议有什么区别?

开放式系统互联模型是一个参考标准,解释协议相互之间应该如何相互作用。TCP/IP协议是美国国防部发明的,是让互联网成为了目前这个样子的标准之一。开放式系统互联模型中没有清楚地描绘TCP/IP协议,但是在解释TCP/IP协议时很容易想到开放式系统互联模型。两者的主要区别如下:

TCP/IP协议中的应用层处理开放式系统互联模型中的第五层、第六层和第七层的功能。

TCP/IP协议中的传输层并不能总是保证在传输层可靠地传输数据包,而开放式系统互联模型可以做到。TCP/IP协议还提供一项名为UDP(用户数据报协议)的选择。UDP不能保证可靠的数据包传输。

TCP/UDP协议

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。

TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点。

OSI是Open System Interconnect的缩写,意为开放式系统互联。

原文:http://blog.csdn.net/cd520yy/article/details/12968923

以上是关于OSI七层网络协议及TCP/UDPC/S架构详解的主要内容,如果未能解决你的问题,请参考以下文章

OSI七层与TCP/IP五层网络架构详解

OSI七层与TCP/IP五层网络架构详解

OSI七层与TCP/IP五层网络架构详解

OSI七层与TCP/IP五层网络架构详解

OSI七层与TCP/IP五层网络架构详解

5G架构5G 协议栈结构以及与OSI七层协议之间的关系