我们先浏览一下TCP/IP的参考模型,对网络模型有一个大致的了解,后续着重学习OSI参考模型。

TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。

1.结构

TCP/IP参考模型包括应用层、传输层、网络层和链路层,如下图。

图中,应用层由用户进程提供,应用程序负责解释通讯数据的含义;传输层及其以下的机制由内核提供,负责处理通讯的细节。

2.传输过程

当两台计算机通过TCP/IP协议通讯的过程如下图。

3.发送过程、封装与各层的作用

假设数据从左侧的应用层发出,需要依次经过传输层、网络层和链路层,最后发到网络上。数据经过各层之后,有什么变化呢?

a).从应用层发出的数据,一般称为用户数据,加上Appl首部之后,称为应用数据;

b).应用数据到传输层后,加上TCP首部称为TCP段;

c).TCP段到达网络层,加上IP首部,就应该称为IP数据报了;

d).IP数据报在链路层被加上以太网首部和尾部,称为以太网帧。

即数据每经过一层,每层协议都添加一个数据首部,这称为封装,如下图所示。

链路层之下是物理层,用电信号的传递方式,如双绞线、同轴电缆、光纤等都属于此范围。物理层的传输能力决定了最大传输速率、传输距离、抗干扰性等。集线器( Hub)是工作在物理层的网络设备。

链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步、冲突检测、数据差错校验等工作。交换机是工作在链路层的网络设备,在不同的链路层网络之间转发数据帧,由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。

网络层的IP协议是构成Internet的基础。 Internet上的主机通过IP地址来标识, Internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。 IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。
网络层负责点到点( point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端( end-to-end)的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协议。 TCP是一种面向连接的、可靠的协议。 UDP协议不面向连接,也不保证可靠性。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。

4.接收过程

数据被封装成帧后,经过传输介质发送到目的主机,再依次从链路层、网络层、传输层到达应用层,这时每经过一层,剥落掉相应协议层的首部,最后到应用层时,将应用层数据交给应用程序进行处理。这个过程如下图所示。

以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷( payload,指除去协议首部之外实际传输的数据)是IP、 ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报, IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、 UDP、 ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段, TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。 IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址, IP地址和端口号合起来标识网络中唯一的进程。

以上就是四层模型的简要介绍,后续文章围绕OSI模型展开。

TCP/IP协议(零)TCP/IP参考模型的更多相关文章

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

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

  2. TCP/IP 协议难点之一—— IP分片

    1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...

  3. [转]使用wireshark分析TCP/IP协议中TCP包头的格式

    本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输协议,两个进程互发数 ...

  4. 【转】TCP/IP协议中TCP和UDP的区别

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  5. TCP/IP 协议图--TCP/IP 基础

    1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所 ...

  6. TCP/IP协议图--TCP/IP基础

    1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所 ...

  7. TCP/IP协议,TCP与平台通信,通讯协议压力测试(python)

    最近的项目来了一个需求,要求测试tcp网关通讯协议: 1.液压井盖通过TCP/IP TCP与平台通信: 2.硬件定期发送心跳包(10S)给平台,是平台与硬件保持长连接: 3.每台硬件有一个12字节的唯 ...

  8. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  9. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

随机推荐

  1. vim中多行注释 和 删除多行注释

    1.多行注释:   a. 按下ctrl + v,进入列模式;   b. 在行首选择需要注释的行;   c. 按下"I",进入插入模式:  d. 然后输入注释符("//&q ...

  2. html bottom html submit按钮表单控件与CSS美化

    一.html submit与bottom按钮基本语法结构 1.html submit按钮在input标签里设置type="submit"即可设置此表单控件为按钮. submit按钮 ...

  3. Eclipse 自动生成getter 和 setter

    示例: public String View;//右击View > Source > Generate Getters and Setters... public String view; ...

  4. jQuery replaceWith replaceAll end的用法

    jQuery replaceWith replaceAll end的用法 <%@ page language="java" import="java.util.*& ...

  5. jQuery删除DOM节点

    jQuery删除DOM节点 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...

  6. 基于ASIO的协程与网络编程

    协程 协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态.协程可以在运行期间的某个点上暂停执行,并在恢复运行时从暂停的点上继续执行. 协程 ...

  7. iOS-如何使用symbolicatecrash

    iOS-如何使用symbolicatecrash 如何使用symbolicatecrash工具分析iOS Crash文件: 原文地址:[iOS Crash文件分析]-如何使用symbolicatecr ...

  8. HDU5875

    Function Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  9. yii2 中布局文件的 设置方法

    网页主题应用的属性: [yii\base\Application::layout|layout 该属性指定渲染 视图 默认使用的布局名字,默认值为 'main' 对应布局路径下的 main.php 文 ...

  10. window下redis的安装

    1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本2.根据PHP版本号,编译器版本号和CPU架构,选择php_redis-2.2.5-5.5-ts-vc11-x86.zip和ph ...