深入解析OSI七层网络模型与数据封装原理

更新:11-08 名人轶事 我要投稿 纠错 投诉

0SI/RM 协议由ISO(国际标准化组织)制定。它具有三个基本功能:为开发人员提供开发和改进所需的、通用的概念,并可用于解释连接不同系统的框架。

95【中国自动化网社区】c2bd23【http://sns.ca800.com】9d2

8825668【中国自动化网社区】6c850d【http://sns.ca800.com】a2eb3

OSI层划分:OSI将计算机网络体系结构分为以下七层:

1. 物理层

物理接口规范、传输比特流、网卡等都工作在物理层。

2. 数据链路层数据链路层

成帧确保帧无差错传输,MAC地址形成EHTHERNET帧

3. 网络层网络层

路由、流量控制、IP 地址、形成IP 数据包

4. 传输层传输层

端口地址,比如HTTP对应80端口。TCP和UDP工作在这一层,还有错误检查和流量控制。

5. 会话层会话层

使用NETBIOS 和WINSOCK 协议组织两个会话进程之间的通信并管理数据交换。 QQ等软件在会话层进行通信。

6. 表示层

使不同操作系统之间的通信成为可能。

7. 应用层应用层

对应各应用软件

有点类似于我们常用的TCP/IP的协议层。 TCP/IP将1和2封装成一层,3和4仍然是独立的层,而5、6和7封装成一层,也就是说,TCP/IP只有四层,但是这里我会描述七层的具体含义。

这里我假设一个场景,将要传输数据的一方视为某公司的经理,将网络传输视为该经理想要告诉另一家公司的经理某件事。

网络A端:

1、应用层:A公司经理说出了他想告诉B公司经理的话。

用户应用程序和网络之间的接口

2、表现层:秘书将A公司经理所说的话翻译成英文并写在纸上。

协商数据交换格式,相当于公司里的助理,给老板汇报情况,给老板写信

3、会话层:行政人员将秘书写的信装入信封,密封,并在信封上写下信息。

允许用户使用简单易记的名字建立联系,相当于公司里的秘书,负责收发信件、写信封、打开信封。

4.运输层:邮局A的工作人员将信件取走。

提供端到端的可靠连接,相当于公司里运营邮局的邮件投递人员

5、网络层:A邮局指派工作人员将信件分发到指定的投递区域。

使用权数据通过大型网络路由,相当于对邮局的工人进行分类

6、数据链路层:A邮局的包装人员将发往该区域的信封装入木箱中,然后发送至A邮局的物流站。

决定如何访问网络媒体。相当于邮局的打包机和拆包机。

7、物理层:邮局A的物流员工将木箱运送到铁路

将数据转换成可以通过物理介质传输的电子信号,相当于邮局的搬运工

这里的铁路是连接网络的物理介质

网络B端:

7、物理层:邮局B的物流员工将木箱从铁路运输到邮局的物流站。

6、数据链路层:B邮局拆箱人员在物流站对木箱进行拆箱,取出所有信件。

5、网络层:邮局B指派的员工将信件分发到指定的投递区域。

4.传输层:邮局B的员工将信件发送给B公司。

3、对话层:B公司行政人员将公司信件进行整理、拆开(假设公司允许),交给各自部门的秘书。

2、表现层:B公司秘书将信函上的英文翻译成中文。

1、应用层:B公司经理听取秘书向他转述信件内容。

至此,通过这7层的完整网络通信已经顺利完成。接下来我将结合TCP/IP中的应用,用技术术语再次描述一下这个7层协议。

(1)应用层:与其他计算机进行通信的应用程序。对应应用程序的通信服务。例如,没有通信功能的文字处理程序无法执行通信代码,从事文字处理工作的程序员不关心OSI第7层。但是,如果添加了传输文件的选项,那么文字处理程序员就需要实现OSI层7.

应用层为操作系统或网络应用程序提供访问网络服务的接口。

应用层是模型的顶层,是用户和网络之间的接口。这一层利用应用程序来完成网络用户的应用需求。该层的数据放置在TCP数据包的数据部分。这一层定义了一个非常重要的协议——Http协议。我们一般的Web开发都是基于应用层的开发,所以下面的专题就给大家介绍一下Http协议。

现在我们知道http是我们在应用层使用的协议,比如我们浏览网页的时候,IOS上层也是基于http的。协议比较简单,很难做到高效灵活。

示例:Telnet(远程登录协议)、FTP(文件传输协议)、HTTP(超文本传输协议)、SNMP(简单邮件传输协议) BOOTP(引导陷阱协议) AFP(Apple Talk 文件协议- Apple 的网络协议系列)交换文件)SNMP(简单网络管理协议1)

NCP(NetWare Core Protoco1)NFS(网络文件系统)

8825668【中国自动化网社区】6c850d【http://sns.ca800.com】a2eb3

(2)表示层:该层的主要功能是定义数据格式和加密方式。例如,FTP允许您选择以二进制或ASII格式传输。如果选择“二进制”,则发送方和接收方不会更改文件的内容。如果选择ASII 格式,则发送方在发送数据之前会将文本从发送方的字符集转换为标准ASII。在接收端将标准ASII转换为接收计算机的字符集。示例:加密、ASII 等。

表示层对上层数据或信息进行转换,以确保一个主机的应用层信息可以被另一主机的应用程序理解。表示层的数据转换包括数据加密、压缩、格式转换等。

例子:

EBCDIC(扩展二进制编码十进制交换码)、ASCII(美国信息交换标准码);

图像标准:JPEG(联合图像专家组)、TIFF(标记图像文件格式)、GIF;

视频标准:MIDI(乐器数字接口)、MPEG(运动图像专家组)、QuickTime等。

广告【中国自动化网社区】2c4082【http://sns.ca800.com】48

(3)会话层:定义了如何启动、控制和结束一个会话,包括多个双向小时的控制和管理,以便在连续消息仅完成部分时通知应用程序,以便表示层看到的数据是连续的,在某些情况下,如果表示层接收到所有数据,则用这些数据来表示表示层。示例:RPC、SQL 等。

会话层管理主机之间的会话进程,即负责进程间会话的建立、管理和终止。会话层还利用插入数据的检查点来实现数据同步。

例子:

SSH、安全外壳

ZIP,区域信息协议

SDP,套接字直接协议

ADSP:AppleTalk 数据流协议

ASP:AppleTalk 的动态会话协议

H.245,多媒体通信呼叫控制协议

ISO-SP、OSI 会话层协议(X.225、ISO 8327)

iSNS,互联网存储名称服务

NetBIOS网络基本输入输出系统

PAP,密码认证协议

PPTP,点对点隧道协议

RPC,远程过程调用

RTCP,实时传输控制协议

SMPP点对点短消息

SCP,安全复制协议

广告【中国自动化网社区】2c4082【http://sns.ca800.com】48

(4)传输层:该层的功能包括选择错误恢复协议还是无错恢复协议,复用同一主机上不同应用程序的数据流的输入,还包括接收错误的数据包命令。重新排序功能。

通过MAC地址和IP地址,我们可以找到互联网上任意两台主机建立通信。然而,这里有一个问题。找到主机后发现主机上有很多程序需要使用网络。例如,如果你正在听音乐、用QQ聊天,当网络上发送一个数据包时,你怎么知道它意味着什么?聊天的内容依然是歌曲的内容。这时就需要一个参数来表示这个数据包发送给哪个程序(进程)使用。该参数称为端口号。主机上使用端口号来识别不同的程序。 (进程),端口是0到65535之间的整数。0到1023的端口被系统占用。用户只能选择大于1023 的端口。

传输层的功能是建立端口到端口的通信,网络层的功能是建立主机到主机的通信。这样,只要我们确定了主机和端口,就可以实现程序之间的通信。我们所说的Socket编程就是通过代码来实现传输层之间的通信。因为初始化Socket类对象需要指定IP地址和端口号。

传输层有两个非常重要的协议:UDP协议和TCP协议

UDP数据包使用UDP协议进行传输。同样,UDP数据包也是由报头和数据组成。头部分主要标识发送端口和接收端口,数据部分是具体的内容信息。类似地,UDP数据包被放入IP数据包的“数据”部分,然后IP数据包被放入数据帧中在网络上传输。

由于UDP协议的可靠性较差(发送数据后无法确定对方是否收到),因此定义了一种高可靠协议——TCP协议。 TCP协议通过握手来确保对方已经收到数据。

示例:TCP(传输控制协议)、UDP(用户数据报协议)、SPX(顺序数据包交换协议)等ATP(AppleTalk 事务协议)、NBP(名称绑定协议) NetBEUI(NetBIOS 扩展用户互联网)

广告【中国自动化网社区】2c4082【http://sns.ca800.com】48

(5)网络层:该层定义端到端的数据包传输。它定义了能够识别所有节点的逻辑地址,也定义了路由的实现方法和学习方法。为了适应最大传输单元长度小于数据包长度的传输介质,网络层还定义了如何将数据包分解为更小的数据包的分段方法。

网络层负责在子网之间路由数据包。网络层还可以实现拥塞控制、互联网互联等功能。

在这一层,数据的单位称为数据包。

该层通过寻址(寻址地址)在两个节点之间建立连接。大家都知道,我们的电脑连接到网络后就有了IP地址。我们可以通过IP地址来判断不同的计算机是否在同一个子网中。路。如果我们的计算机连接到网络上,它将有两种地址:物理地址和网络地址(IP地址)。如果网络上的计算机想要进行通信,它们必须知道进行通信的计算机在“哪里”。首先,使用网络地址来确定是否在同一子网中,然后处理物理地址(MAC)地址来准确确定计算机正在哪里进行通信。

在网络层,有我们熟悉的IP协议(即指定网络地址的协议)。目前,第四版本的IP协议(IPv4)被广泛使用。该版本规定网络地址由32个二进制位组成。我们可以自己配置IP地址,也可以自动获取IP地址。 IP地址分为两部分。前24位数字代表网络,后8位数字代表主机号。例如,192.168.254.1 和192.168.254.2 位于同一子网中。因为两个IP地址的前24位是相同的。

数据在网络层以IP数据包的形式传输。 IP数据包也包括两部分:Head和Data。 IP数据包被放入数据帧的数据部分进行传输。

示例:IP(互联网协议)、IPX(互联网工作数据包交换)、DDP(数据报传送协议1) ICMP(互联网控制消息协议)APPLETALK、

6b3365【中国自动化网社区】652ace【http://sns.ca800.com】ba9338

(6)数据链路层:定义了如何在单个链路上传输数据。这些协议与所讨论的各种媒体相关。

数据链路层通过不可靠的物理介质提供可靠的传输。该层的功能包括:物理地址寻址、数据成帧、流量控制、数据错误检测、重传等。

在这一层,数据的单位称为帧。

该层对从物理层传输的比特流进行分组。由电信号组成的一组数据包称为“帧”。数据链路层用于以“帧”为单位传输数据包并传输数据。对于上层(网络层)来说,帧数据由两部分组成:帧头和帧数据。帧头包括接收者的物理地址(即网卡的地址)和其他网络信息。帧数据是要传输的数据主体。数据帧的最大长度为1500字节。如果数据很长,就必须分成多个帧来传输。

示例:ARP、RARP、SDLC、HDLC、PPP、STP、帧中继等。

(7)物理层:OSI的物理层规范是与传输介质的特性有关的标准。这些规范通常引用其他组织制定的标准。连接器、引脚、引脚用途、电流、编码和光调制都是各种物理层规范的一部分。物理层通常使用多个规范来定义所有细节。

物理层指定激活、维护和关闭通信端点的机械、电气、功能和过程特性。该层为上层协议提供数据传输的物理介质。只是说明标准

在这一层,数据的单位称为比特。

示例:802.3EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi 令牌环等。

OSI 是一组定义明确的协议规范,并且具有许多完成类似任务的可选部分。

它定义了开放系统的层次结构、各层之间的相互关系以及每层可能包含的任务。它充当协调和组织各层提供的服务的框架。

然而,OSI参考模型并没有提供可实现的方法,而是描述了一些用于协调进程间通信标准开发的概念。也就是说,OSI参考模型不是标准,而是用于制定标准的概念框架。

事实上的标准是TCP/IP 参考模型

PPPOE机制

此外,最常见的例子是PPPoE,它在以太网上使用PPP 服务,而不使用ARP。它的实现机制如下:我要和外界通信,首先我发送一个PADI广播包;如果这个以太网上有PPPoE服务器(即BRAS),则回复一个PADO单播给我;然后我发送PADR 请求PPPoE 服务器建立连接。服务器收到后回复PADS单播报文,分配SessionID,PPPoE连接建立。

ARP、RARP

1)ADSL拨号成功后,IP与MAC的映射并未建立。拨号链路是点对点链路。这种链路的特点是一端发送的数据总是按原来的顺序被另一端接收。 (即使两端的IP地址不在同一个网段,仍然可以收到。)有一个确定性:一定是对方收到的;唯一性:必须被唯一的peer接收;顺序性:数据包不会随机连续;这样的链接不需要MAC。

2)你所说的拨号可能是PPPOE拨号,与IP和MAC有关,但采用的是PPPOE自身的保证机制,而不是ARP协议。这就是PPPOE能够防止ARP病毒的根本原因。

如果你谈论细胞,它们就是ATM 的东西。映射的不是IP和MAC,而是IP和VPI VCI对。

任何第3 层地址都需要映射到第2 层地址。以太网是IP和MAC,FR是IP和DLCI,ATM是IP和vpi/vci。当没有映射时,在路由器上调试时会看到“封装失败”。

为了你我已经无法忍受了

3)得出以下结论:

1、计算机访问Internet时,无论客户端是基于以太网的还是服务器端是基于以太网技术的,都必须使用ARP和RARP协议。

2. 如果客户端计算机或服务器在访问Internet时使用FDDI或其他非以太网技术,则不需要使用ARP和RARP协议。

我最大的感受是你总结的一切都是错的。

就说几句话吧。

1、arp和rarp与以太网的联系是地址解析和反向地址解析协议,它们是基于以太网技术的。对此,没什么好说的。

2.如果你硬要把arp和rarp与internet连接起来,这里的关系就没有你说的那么简单了,绝对是狭隘的。互联网上有很多东西,但与arp和rarp相关的几乎没有。这就是你对这个概念理解模糊的原因。

3. FDDI 是光纤。无论是技术还是理念,都与arp、rarp无关。那就不谈什么是信使了。

那么,在最深层次上,以太网传输数据时,模拟信号转换为数字信号,即用0和1来处理数据电平。

一般来说,arp和rarp在内网中用来解析地址(之前是这样定义的,这也是最重要的作用)。基本上,广义上它们是在设备(PC或服务器)端进行处理的。你不需要担心它们是如何连接的,也不需要担心它们是什么网络~

FDDI即光纤传输,将模拟信号转换为光信号进行处理和传输。两个局端之间有转换装置进行处理。然后同样通过arp和rarp协议将复员信号发送到另一端的局端。处理数据的具体方向

那么,arp和rarp与互联网的关系,无论是基于ATM还是基于FR还是ADSL拨号PPP/MP等网络“中间”技术与arp和rarp的关系可以用一句话来概括,即没有连接,8个极都被击中。无法使用

最后,在下结论的时候,在不太明确的情况下最好不要使用“必须”这个词。否则,就会对我们的孩子造成伤害。

多读点书

4)ADSL只是一种接入方式

5)首先,我不是专家,但我对你说的还是有一点信心的。

ARP(地址解析协议)和RARP(反向地址解析协议)是一些网络接口(例如以太网和令牌环)使用的特殊协议,用于转换IP层和网络接口层使用的地址。这里已经说得很清楚了,并不是每个网络都需要arp。本质上,您可以实现一个第2 层链路完全由非以太网和令牌环网络组成的网络。根本不涉及arp。

对于TCP/IP 来说,它是可选的、可有可无的。它既不是TCP/IP 协议簇的最初实现,也不是必要或必要的实现。如果不怕麻烦的话,根本不需要有(对于RARP协议,情况稍微特殊)。从这个意义上说,ARP/RARP根本不追求不必要或必要的问题。

比如我们农业生产的基础是什么?种子、土地、人、阳光、环境。除了这些之外,其他的东西都是可有可无的。在农业社会,大家都是刀耕火种,现在已经是机械化了。 ARP/RARP 的存在或不存在与机械化的存在或不存在相同。没有必要,但是现在如果你说不需要农具,可以吗?答案是肯定的,那不行。能行是因为无能为力,不行是因为没有人愿意背天朝黄土干活了。没有它,大家可能真的不习惯。

总之,讨论arp和rarp存在的必要性是没有意义的。

至于P2P,与本帖内容无关。说它是什么样的技术有点牵强。它可以被视为一种思想、一种软件组织结构。至于有可能改变互联网的基础,人们听后感到一头雾水。前面提到的C/S和B/S基本上是一个东西。至于使用哪种组织软件,取决于应用程序的特点。它不是万能药。如果你使用P2P,一切都会好起来的。如果选择其他软件,则无法使用。反之亦然。

你的主要问题是你对网络实际内容的理解很肤浅,而且还自以为是。我个人认为,你需要做的是静下心来,仔细领会互联网的本质,不要搞出一些似是而非的东西,这实在是误导人。

6) 现在的网络都有二层地址,但不一定叫MAC地址。例如FR的DLCI、ATM的VPI VCI等。

下面讲一个两台计算机之间通信过程的实例化,比如常见的:

HTTP协议

HTTP 协议是如何工作的?

大家都知道一般的通信流程:首先,客户端向服务器发送请求。服务器收到请求后,会生成响应并返回给客户端。

1.请求和响应的格式

请求格式:

HTTP 请求行

(请求)标头

空行

可选消息正文

注意:请求行和标头必须以(即回车符后跟换行符)结尾。空行只能包含空格,不能包含其他空格。在HTTP/1.1协议中,除了Host之外的所有请求头都是可选的。

例子:

2. 如何建立连接

HTTP支持2种建立连接的方式:非持久连接和持久连接(HTTP 1.1默认的连接方式是持久连接)。

1)非持久连接

让我们看一下在没有持久连接的情况下将网页从服务器传输到客户端的步骤。假设shell 由1 个基本HTML 文件和10 个JPEG 图像组成,并且所有这些对象都存储在同一服务器主机上。假设基本HTML文件的URL为:gpcuster.cnblogs.com/index.html。

以下是骡子:的具体步骤

1. HTTP客户端初始化与服务器主机gpcuster.cnblogs.com中的HTTP服务器的TCP连接。 HTTP 服务器使用默认端口号80 来侦听来自HTTP 客户端的连接建立请求。

2. HTTP 客户端通过与TCP 连接关联的本地套接字发出HTTP 请求消息。此消息包含路径名/somepath/index.html。

3. HTTP 服务器通过与TCP 连接关联的本地套接字接收请求消息,然后从服务器主机的内存或硬盘中检索对象/somepath/index.html,并通过同一对象发送包含该对象的响应插座。信息。

4、HTTP服务器告诉TCP关闭TCP连接(但TCP不会真正终止连接,直到客户端收到刚才的响应消息)。

5. HTTP 客户端通过同一套接字接收此响应消息。 TCP 连接随后终止。该消息表明封装的对象是一个HTML 文件。客户拿出这个文件进行分析,发现有10个对JPEG对象的引用。

6. 对每个引用的JPEG 对象重复步骤1-4。

之所以使用非持久连接来调用上述步骤,是因为服务器每次发送一个对象时,相应的TCP 连接都会关闭,这意味着每个连接持续的时间不足以用于传输其他对象。每个TCP连接仅用于传输一条请求消息和一条响应消息。对于上面的示例,每次用户请求该网页时,都会生成11 个TCP 连接。

2)持久连接

非持久连接有一些缺点。首先,客户端必须为每个请求的对象建立并维护一个新连接。对于每个这样的连接,TCP 必须在客户端和服务器端分配TCP 缓冲区并维护TCP 变量。这会严重增加Web 服务器的负载,而Web 服务器有可能同时处理来自数百个不同客户端的请求。其次,如前所述,每个对象都有2个RTT的响应扩展:——。一个RTT用于建立TCP连接,另一个RTT用于请求和接收对象。最后,每个对象都会遭受TCP 慢启动,因为每个TCP 连接都以慢启动阶段开始。然而,使用并行TCP连接可以部分缓解RTT延迟和软启动延迟的影响。

在持久连接的情况下,服务器在发送响应后保持TCP 连接打开。同一客户端/服务器对之间的后续请求和响应可以通过此连接发送。不用说,整个网页(在上面的示例中,包含一个基本HTML 文件和10 个图像的页面)可以通过单个持久TCP 连接发送。 即使存储在同一服务器中的多个网页也可以通过单个持久TCP 连接发送。发送。通常,HTTP 服务器会在连接闲置一段特定时间后关闭连接,该时间段通常是可配置的。持久连接分为两个版本:不带管道和带管道。如果是没有管道的版本,客户端只有在收到前一个请求的响应后才会发出新的请求。在这种情况下,网页

面所引用的每个对象(上例中的10个图像)都经历1个RTT的延迟,用于请求和接收该对象。与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善,不过带流水线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是,服务器送出一个对象后开始等待下一个请求,而这个新请求却不能马上到达。这段时间服务器资源便闲置了。 HTTP/1.1的默认模式使用带流水线的持久连接。这种情况下,HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。如果所有的请求和响应都是紧挨着发送的,那么所有引用到的对象一共只经历1个RTT的延迟(而不是像不带流水线的版本那样,每个引用到的对象都各有1个RTT的延迟)。另外,带流水线的持久连接中服务器空等请求的时间比较少。与非持久连接相比,持久连接(不论是否带流水线)除降低了1个RTT的响应延迟外,缓启动延迟也比较小。其原因在于既然各个对象使用同一个TCP连接,服务器发出第一个对象后就不必再以一开始的缓慢速率发送后续对象。相反,服务器可以按照第一个对象发送完毕时的速率开始发送下一个对象。 3.缓存的机制 HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来为此目的。后者减少了网络应用的带宽;HTTP用“验证(validation)”机制来为此目的。 HTTP定义了3种缓存机制: lFreshnessallows a response to be used without re-checking it on the origin server, and can be        controlled by both the server and the client. For example, the Expires response header gives a date when the        document becomes stale, and the Cache-Control: max-age directive tells the cache how many seconds the response        is fresh for. lValidationcan be used to check whether a cached response is still good after it becomes stale. For        example, if the response has a Last-Modified header, a cache can make aconditional requestusing        the If-Modified-Since header to see if it has changed. lInvalidationis usually a side effect of another request that passes through the cache. For example, if        URL associated with a cached response subsequently gets a POST, PUT or DELETE request, the cached response will        be invalidated. 4.响应授权激发机制 这些机制能被用于服务器激发客户端请求并且使客户端授权。 详细的信息请参考:RFC 2617: HTTP Authentication: Basic and Digest Access 5.基于HTTP的应用 多线程下载 下载工具开启多个发出HTTP请求的线程 每个http请求只请求资源文件的一部分:Content-Range: bytes 20000-40000/47000 合并每个线程下载的文件 HTTPS传输协议原理 两种基本的加解密算法类型 通信过程: 优点: 客户端产生的密钥只有客户端和服务器端能得到 加密的数据只有客户端和服务器端才能得到明文 客户端到服务端的通信是安全的 服务器和客户端交互: 参考文章:http://blog.csdn.net/lisa890608/article/details/8231666 http://www.cnblogs.com/qiqibo/p/3143964.html http://www.cnblogs.com/skyofbitbit/p/3713125.html http://www.cnblogs.com/lavenderone/archive/2011/10/14/2212523.html TPC/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍: “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如            果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也            可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。” 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。        实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现        只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、        listen、connect、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理 解: “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。” 总结一些基于基于TCP/IP协议的应用和编程接口的知识,也就是刚才说了很多的 HTTP和Socket。 CSDN上有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。 实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。 下面是一些经常在笔试或者面试中碰到的重要的概念,特在此做摘抄和总结。 一。什么是TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭 连接之前,TCP        连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客 户端交互,最终确定断开) 二。利用Socket建立网络连接的步骤 建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。 套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。 1。服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。 2。客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 3。连接确认:当服 务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端        确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 三。HTTP链接的特点 HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。 HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。 四。TCP和UDP的区别 1。TCP是面向链 接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的        可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重 发,所以说UDP是无连接的、不可靠的一种数据传输协议。 2。也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。 知道了TCP和 UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,因为程序员可以手动对UDP        的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

用户评论

花海

这篇文章一定能帮我理解网络通信是怎么运作的吗?

    有9位网友表示赞同!

哽咽

我一直对OSI模型很感兴趣,不知道具体每一层有什么作用。

    有5位网友表示赞同!

淡抹烟熏妆丶

学习一下数据封装的过程应该很有用啊!

    有5位网友表示赞同!

轨迹!

数据在网络中传递的时候会经过哪些步骤呢?

    有20位网友表示赞同!

素衣青丝

感觉OSI模型就像一套标准的框架一样?

    有14位网友表示赞同!

冷青裳

终于要详细了解OSI七层协议模型了!

    有9位网友表示赞同!

晨与橙与城

这篇阅读会让我对网络协议有更深层次的理解。

    有10位网友表示赞同!

蔚蓝的天空〃没有我的翅膀

数据在不同层的封装机制,听上去很有意思!

    有8位网友表示赞同!

あ浅浅の嘚僾

希望这篇文章能用通俗易懂的方式解释 OSI 模型。

    有5位网友表示赞同!

闷骚闷出味道了

我现在学习网络编程,了解OSI模型是必修课!

    有16位网友表示赞同!

有阳光还感觉冷

想对OSI参考模型中的数据封装过程有一个清晰的认识。

    有8位网友表示赞同!

↘▂_倥絔

看到“细说”就知道这篇文章会很详细的讲解了!

    有14位网友表示赞同!

走过海棠暮

学习一下OSI模型可以帮助我更好地解决网络问题吧?

    有7位网友表示赞同!

海盟山誓总是赊

感谢作者分享这篇有用的文章!

    有17位网友表示赞同!

满心狼藉

这篇文章可能对即将参加面试的人很有帮助?

    有15位网友表示赞同!

伪心

感觉学习网络通信真的很需要一个系统性的学习框架?

    有20位网友表示赞同!

暮光薄凉

终于有机会深入了解OSI模型了,期待着它的讲解!

    有7位网友表示赞同!

一样剩余

这篇文章应该能让我掌握一些网络基础知识吧!

    有7位网友表示赞同!

熟悉看不清

我需要学习一些关于网络协议的概念和原理。

    有11位网友表示赞同!

【深入解析OSI七层网络模型与数据封装原理】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:Swift编程语言与Objective-C技术的融合与发展 下一篇:Spring高级教程(第二部分):任务异步执行技巧