TCP/IP基础概念及通信过程举例

网络 通信技术
写作原因:又过了很久没更新博客了……这次博主就介绍一下计算机网络中TCP/IP模型的整体理论及数据链路层一些知识吧。

写作原因:又过了很久没更新博客了……这次博主就介绍一下计算机网络中TCP/IP模型的整体理论及数据链路层一些知识吧。

出现

上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络。后来为了验证分组交换技术的实用性,ARPANET出现了,并且在3年内逐渐发展,由4个节点发展至34个节点。20世纪70年代前半叶,ARPANET一个机构研制出了TCP/IP,1982年具体规范确定,1983年成为ARPANET唯一指定协议。乘着TCP/IP的发展之风,互联网应运而生。

标准化

先说明一下TCP/IP的含义。其实它是指利用IP进行通信是所用到的协议群的统称。TCP/IP协议标准化具有两大特点: 开放性 及 实用性 。前者指任何人可以通过一定的方式制定修改协议;后者指TCP/IP协议根据实际实验情况和可行性不断修改,贴合应用。关于TCP/IP的规范由IETF制定,并在RFC文档中可以查看。具体网址: rfc-editor ,读者可以在该网站查看TCP/IP协议文档或是对TCP/IP协议的修改给出自己的建议。

互联网基础认知

前面说了互联网是基于TCP/IP一步步发展起来了,这里大概介绍一下互联网相关的知识。互联网中的每个网络都是由骨干网和末端网组成的,每个网络通过NOC相连。如果运营商不同则通过IX连接。参考下图:

TCP/IP协议分层模型简介及通信举例

这个系列的上一篇文章博主提到了OSI分层模型,下面我们将要学习的是TCP/IP分层模型。先参考下图:

在TCP/IP中把OSI一些层次进行了抽象整合,整个TCP/IP分为硬件、数据链路层、网络层、传输层和应用层。我们在这里先大致介绍一下各个分层的作用,后面的文章会详细对每个分层相关的协议进行梳理。

简介

  • 硬件层:负责数据传输的硬件物理设备,由于硬件之间的差异性难以统一定义及指标。
  • 数据链路层:利用以太网中的数据链路层进行通信,可以理解为NIC的“驱动程序”。
  • 网络层:使用IP协议,类似OSI第三层网络层。此外除了IP协议还有ICMP协议(用于处理数据发送异常),ARP协议(用于从IP地址中解析MAC地址)。
  • 传输层:让应用程序之间实现通信,主要有TCP、UDP两种协议。
  • 应用层:类似OSI中的会话层、表示层及应用层。包括HTTP(应用层)、HTML(表示层)、E-Mail、FTP、SSH等等。

下面通过一个简单的例子来说明一下这些分层是如何协调工作的。

通信举例

发送

再次以发送邮件为例。点击“发送”时开始进行TCP/IP通信。首先程序进行编码,然后确定通信的建立连接、发送数据的时间。下面建立TCP连接。TCP根据应用指示负责建立连接、发送数据及断开连接。TCP首部包括源端口号和目标端口号、序号及校验和(详细内容见后面的文章),通过首部信息传递TCP层的信息。加完首部后数据包往下传递到IP层,IP层加上IP首部包括地址等信息用于寻址操作,之后将数据继续往下传递附加数据链路层首部。***发送时的分组数据包会加上以太网包尾(用于循环冗余校验)。

接收

主机收到数据包后会在以太网包首部找到MAC地址判断是否为自己的包,如果不是则丢弃,如果是则传递给上一层IP层处理,以此类推,不断往上传递至TCP层。在TCP层会计算校验和以判断数据是否破坏,然后检查是否按序号接收数据,***检查端口号。处理完成之后数据包继续往上层发送,即到了应用层。如果这时出现主机无邮件信箱、硬盘空间满等情况,主机B则会发送“处理异常”通知发送端。

 


到这里TCP/IP通信流程大概梳理了一遍,具体细节在后面阐述。

 

责任编辑:未丽燕 来源: RoadToGeek技术小屋
相关推荐

2010-06-08 14:23:47

TCP IP协议概念

2009-02-18 10:21:00

IP电话语音通信

2010-06-12 15:41:29

TCP IP通信协议

2009-08-20 18:47:19

C#异步通信

2011-08-10 13:24:46

SQL Server

2010-06-08 13:32:19

TCP IP协议基础

2010-06-13 14:41:59

TCP IP协议

2021-08-04 08:55:02

Socket Java开发

2010-06-12 15:54:09

TCP IP协议

2021-07-14 08:24:23

TCPIP 通信协议

2010-08-30 14:27:06

CSS样式表

2010-10-08 14:54:22

JavaScript特

2018-12-05 23:18:24

TCPIP数据封装

2009-08-25 18:16:02

.NET Framew.NET Framew

2010-09-14 09:41:56

DIV技术DIV标签

2010-06-13 13:17:11

TCP IP协议

2010-01-13 18:17:00

VB.NET通信程序

2009-09-09 16:46:59

C# XmlSeria

2010-08-23 16:23:53

CSS+DIV

2019-11-08 14:47:49

TCPIP网络
点赞
收藏

51CTO技术栈公众号