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 ...
随机推荐
- 谈谈线程同步Lock和unLock
Lock可以使用Condition进行线程之间的调度,它有更好的灵活性,而且在一个对象里面可以有多个Condition(即对象监视器),则线程可以注册在不同的Condition,从而可以 有选择性的调 ...
- css3 翻牌效果
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...
- python 自动化运维项目_目录
微信小程序监控界面 CMDB 跳板机 代码上线系统 网站用户访问质量监测 分布式监控 Docker自动化管理平台 Openstack二次开发
- 2.13. 获取托管对象(Core Data 应用程序实践指南)
用NSFetchRequest获取NSArray,里面都是托管对象.如果上下文里没有数据,就会从持久化存储区里获取. NSFetchRequest *request = [NSFetchRequest ...
- gdb命令整理
Microsoft Windows XP [版本 ] (C) 版权所有 - Microsoft Corp. C:\Documents and Settings\Administrator>e: ...
- Scrum
Scrum[编辑] 维基百科,自由的百科全书 Scrum是一种敏捷软件开发的方法学,用于迭代式增量软件开发过程.Scrum在英语是橄榄球运动中争球的意思. 虽然Scrum是为管理软件开发项目而开发 ...
- Promise基础
前言: ES2015将Promise引入语言规范,包括fetch等在内的API也构建在Promise之上.作为让js摆脱“回调地狱”的重要一环和众多框架中的重要基础设施之一,学习如何自己实现一个Pro ...
- SVG六基本元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 理解FMS中的实例
FMS服务器端安装后,唯一需要注意的是设置端口,默认的访问端口是1935和80,如果服务器上安装了IIS提供 WEB服务,那么需要将80修改为其他端口如8080,否则,IIS将会无法工作.如果愿意,也 ...
- JS中常见排序算法详解
本文将详细介绍在JavaScript中算法的用法,配合动图生动形象的让你以最快的方法学习算法的原理以及在需求场景中的用途. 有句话怎么说来着: 雷锋推倒雷峰塔,Java implements Java ...