TCP/IP协议(零)TCP/IP参考模型
我们先浏览一下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参考模型的更多相关文章
- 【TCP/IP 协议】 TCP/IP 基础
总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后开始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...
- TCP/IP 协议难点之一—— IP分片
1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...
- [转]使用wireshark分析TCP/IP协议中TCP包头的格式
本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输协议,两个进程互发数 ...
- 【转】TCP/IP协议中TCP和UDP的区别
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
- TCP/IP 协议图--TCP/IP 基础
1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所 ...
- TCP/IP协议图--TCP/IP基础
1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所 ...
- TCP/IP协议,TCP与平台通信,通讯协议压力测试(python)
最近的项目来了一个需求,要求测试tcp网关通讯协议: 1.液压井盖通过TCP/IP TCP与平台通信: 2.硬件定期发送心跳包(10S)给平台,是平台与硬件保持长连接: 3.每台硬件有一个12字节的唯 ...
- TCP/IP协议基础(转)
转自 http://www.chinaunix.net 作者:Bernardus160 发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
随机推荐
- uWSGI参考资料(1.0版本的配置选项列表)
Reference: http://blog.csdn.net/kevin6216/article/details/15378617 uWSGI参考资料(1.0版本的配置选项列表) 下面的内容包含了大 ...
- Linux_System2
1.从服务器下载http*.tar.gz源码包,安装到/usr/local/apache目录下,要求安装时指定能够动态加载模块,能够支持地址回写功能,能够使用ssl加密功能../configure — ...
- ubuntu下Xmodmap映射Esc和Ctrl_L
一般来说,用Vim.Emacs的人,都会有做键盘映射的想法 我当然也是,开始学习Vim的时候,就觉得,把Esc键放在左上角, 是一件很SB的事情,稍微大一点的键盘,手指必须要离开位置才能按到Esc键, ...
- java 之 Spring 框架(Java之负基础实战)
1.Spring是什么 相当于安卓的MVC框架,是一个开源框架.一般用于轻型或中型应用. 它的核心是控制反转(IoC)和面向切面(AOP). 主要优势是分层架构,允许选择使用哪一个组件.使用基本的Ja ...
- 2.10. 代码片段:demo方法(Core Data 应用程序实践指南)
该代码段我觉得没有太多东西 - (void)applicationDidBecomeActive:(UIApplication *)application { [self cdh]; [self de ...
- @RequestBody和@ResponseBody
@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象. @ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMess ...
- PHP实现验证码图片
<?php header("Content-type: image/png"); session_start(); $authnum = ''; $str = 'abcdef ...
- hive CliDriver 源码分析
664行 CliDriver main启动 public static void main(String[] args) throws Exception { int ret = new CliDri ...
- 用Redis作为Mysql数据库的缓存
看到一篇不错的博文,记录下: http://blog.csdn.net/qtyl1988/article/details/39553339 http://blog.csdn.net/qtyl1988/ ...
- 在Windows下开发Node.js的C/C++原生扩展
准备工作 (1)本机系统说明:本人机器为win7 64位,32位也可以. (2)软件安装: VISUAL C++ 2010 EXPRESS(Visual Studio 2010也可以): window ...