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

时间:2022-09-09 08:44:54

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基础概念及通信过程举例

在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基础概念及通信过程举例
TCP/IP基础概念及通信过程举例

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

TCP/IP基础概念及通信过程举例的更多相关文章

  1. 计算机网络历史与基本概念&分层与参考模型(TCP/IP与OSI)&通信过程

    Definition: 计算机网络:使用单一技术相互连接的自主计算机的互联集合. 单台计算机独立自主(不受制于其他计算机),连接介质可以使光纤.铜线也可以是微波.红外.卫星. 互联网络(Interne ...

  2. TCP&IP基础概念复习

    第一章概述 NII(National Information Infrastructure):国家信息基础设施 GII(Global Information Infrastructure):全球信息基 ...

  3. TCP/IP——基础概念简记

    TCP/IP协议族的分层: 应用层 运输层 网络层 链路层 互联网地址(IP地址):互联网上的每个接口必须有一个唯一的Internet地址,它一定的结构,分为ABCDE五类.A类保留给*机构,B类分 ...

  4. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  5. 初入网络系列笔记(1)TCP/IP基础

    一.借鉴说明,本博文借鉴以下博文 1.BlueTzar,TCP/IP四层模型, http://www.cnblogs.com/BlueTzar/articles/811160.html 2.叶剑峰,漫 ...

  6. TCP/IP基础知识

    TCP/IP基础知识 网络 TCP/IP 引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP ...

  7. 【TCP/IP 协议】 TCP/IP 基础

    总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后开始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...

  8. 二、tcp/ip基础知识

    一.TCP/IP的标准化 1.TCP/IP的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属 ...

  9. 第二章 TCP/IP 基础知识

    第二章 TCP/IP 基础知识   TCP/IP  transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的.   ...

随机推荐

  1. 【转】Backbone标准例子——通讯录

    参考:http://z2009zxiaolong.iteye.com/blog/1847833 感觉不错的例子,模型.视图.路由等知识点都用到了:),将此文中的源码转载如下: http://dmyz. ...

  2. underscorejs-reject学习

    2.9 reject 2.9.1 语法: _.reject(list, predicate, [context]) 2.9.2 说明: 前边我们已经学习了filter方法,那么我们在学习reject之 ...

  3. UIColor各种颜色转换

    1.Hex值颜色转换 #import <UIKit/UIKit.h> @interface UIColor (Extension) // 根据无符号的32位整数转换为对应的RGB颜色 + ...

  4. 使用 PHP 来做 Vue&period;js 的 SSR 服务端渲染

    对于客户端应用来说,服务端渲染是一个热门话题.然而不幸的是,这并不是一件容易的事,尤其是对于不用 Node.js 环境开发的人来说. 我发布了两个库让 PHP 从服务端渲染成为可能.spatie/se ...

  5. 【AGC 002F】Leftmost Ball

    Description Snuke loves colorful balls. He has a total of N*K balls, K in each of his favorite N col ...

  6. HTML代码片段

    按钮类 后退.前进按钮 返回按钮 几种刷新按钮 警告框显示源代码 链接按钮 打开新窗口 打印 新窗口延迟打开 背景色变换 表单类 点击清空文字 关闭输入法 链接 双击打开链接 超链接鼠标形状 页面 不 ...

  7. SSH Secure Shell Client中文乱码的解决方法

    http://www.cnblogs.com/52linux/archive/2012/03/24/2415082.html 方案一:修改linux服务器的环境变量 使用linux,在用户根目录下有一 ...

  8. Window环境配置Mongodb

    Mongodb这几天也了解了一下,今天配置了下环境,从今天开始学下Mongodb数据库. 一.下载 在这个网址中选择要下载的开发环境https://www.mongodb.com/download-c ...

  9. 006&lowbar;Mac下sublime text 的&OpenCurlyDoubleQuote;package control”安装,sublimepackage

    Mac下sublime text 的“package control”安装,sublimepackage 小伙伴们好,我根据昨晚的经历写一个小总结:关于“Mac下sublime text 的“pack ...

  10. R read&period;table函数的check&period;names参数

    今天用cummeRbund 对cuffdiff的结果进行可视化, 一直报错,之前跑的好好的,找了半天原因, 原来出现在read.table这个函数上: read.table有一个参数check.nam ...