`

TCP/IP 协议的结构与运行原理

 
阅读更多
本文背景:
TCP/IP模型很成功,其设计已经经得起多年的磨练。无奈,TCP/IP协议族是很繁杂的一个模型,为了全面理解它,宜采取先全局后局部的庖丁解牛式。本文从应用的角度试着去理解TCP/IP的全貌,配合例子加以讲解。
本文目的:
巩固自己这方面的知识,作为深入TCP/IP协议族的基础。
本文内容:
1. TCP/IP协议族组成
从字面上理解,TCP/IP协议族只有TCP、IP协议,其实不然。其真正的名字是Internet协议族 (Internet Protocol Suite) 。和大型软件一样,其分为四层:应用层、传输层、网络层、链路层。
每一层的功能和目的都是不一样的,每一层上服务的协议也不是有区别的。从上往下看:
应用层(产生|利用数据)
协议:FTP、HTTP、SNMP(网管)、SMTP(Email)等常用协议;
职责:利用应用层协议发送用户的应用数据,比如利用FTP发送文件,利用SMTP发送Email;由系统调用交给运输层处理。
运输层(发送|接收数据)
协议:TCP(有连接)、UDP(无连接);
职责:负责建立连接、将数据分割发送;释放连接、数据重组或错误处理。
网络层(分组|路由数据)
协议:IP、ICMP(控制报文协议)、IGMP(组管理协议);
职责:负责数据的路由,即数据往哪个路由器发送。
链路层(按位发送|接收数据)
协议:以太网卡设备驱动、令牌网卡驱动程序、ARP、RARP等;
职责:负责传输校验二进制用户数据。

从可靠性角度看各层区别:
网络层IP协议是不可靠的协议,为此,如果其上面的层也不做任何特殊处理,也将是不可靠的。于是,运输层的TCP协议弥补了这个空缺,提供有连接的、可校验的数据传输服务。
应用层的话可对数据进行加密之类的处理,增强的是传输数据的安全性,如https。
链路层可对数据进行校验。

从运行进程态看各层区别:
应用层运行在用户程序进程中,属性用户态;
其他层则在系统内核进程运行,属于核心态;
从通信方式上看各层区别:
传输层是端对端的通信,也就是说,处理的是进程与进程之间的通信,如两个TCP进程;
网络层是点对点的通信,也就是说,处理的是机器之间的 逻辑连接。

从传输数据单元上看区别:
传输层上形成的是TCP或UDP报文段;
网络层形成的是IP数据报;
数据链路层形成的是帧(Frame)。

从寻址方式上看各层区别:
网络层通过IP寻址;
链路层通过MAC寻址。

注解:
ICMP: 供IP用于发送错误报文,也可由应用层直接调用;
IGMP: 用于多播(Multicast),比如,UDP可用多播IP地址往多个目标主机发送数据报,就是依靠它。
ARP&RARP: 用户在IP地址与MAC地址互相转换。
2. TCP/IP模型基础设施
IP地址
共分五类地址,分别如下:
A类:0.  0. 0. 0——127.255.255.255(单播)
B类:128.0.0.0——191.255.255.255(单播)
C类:192.0.0.0——223.255.255.255(单播)
D类:224.0.0.0——239.255.255.255(多播)
E类:240.0.0.0——247.255.255.255(待用) 
附加类:255.255.255.255 (传输层UDP广播)

MAC地址
每个网卡的MAC地址世界唯一,不可变;计算机通信其实靠的是MAC地址,而不是IP地址,请看下面注解。

端口
端口在硬件里的名称为接口,跟网卡的入口一样;在软件概念里,可以理解为一些数据结构数据缓冲区。
端口可分为:
知名端口:0001——1023 (例如FTP 20,TCP 21,UDP 69)
临时端口:1024——5000
预留端口:5000——65535
假设你的应用程序需要端口,一般是从临时端口分配,只在应用程序运行时有效,故称临时端口。
传输层可将进程与端口进行绑定,当数据到来时,其知该往哪个进程缓冲区里送。

注解:
IP与MAC的区别:IP地址是基于网络拓扑结构的,是动态可变的。MAC地址是由网卡厂商定的,是终身不可变且唯一的。假设应用层利用MAC地址传输数据,那么其是不灵活的,因为它不能变。所以,应用层用IP寻址。
但是,硬件又必须用MAC才能找到机器,为此引入ARP及RARP来做两地址的查询与转换。


3. TCP/IP应用案例分析
场景:左边用户利用FTP客户端与右边FTP服务器端进行连接上传文件。
数据将从上往下流,每到一层都会加上层头,数据以类堆栈形式存储,到目标机器时,底层数据先得,由底向上,符合堆栈先进后出的特性。
 


图1  TCP/IP内部分解图

步骤1:应用层准备好数据文件,调用Windows API通知传输层TCP建立连接,传输层加入TCP包头,其中包含标识应用层协议的标识符——端口 21。
步骤2:网络层接收了传输层的TCP包,由于IP协议可接收ICMP(1)、IGMP(2)、TCP(6)、UDP(17)来的数据,其需要一个标识域来表明是那个协议发来的数据。此数据域将加于IP包头中。除此之外,还将赋以IP地址。
步骤3:数据链路层接收网络层来的数据后,加之标识域表明数据是从IP、ARP或RARP来。然后,加上MAC地址往外发送。
步骤4:将数据由网卡送出,送的过程中,ARP利用目标IP找到最近的路由器MAC地址,然后将包发往它,之后由它找到一个路由器,最终将数据包送到右边机器的网卡中。
步骤5:根据包头的标识域可知这是一个IP数据包,利用IP协议拆包。
步骤6:根据包头的标识域可知这是一个TCP包,利用TCP协议拆包。
步骤7:根据包头的端口号,将数据直接送入应用层的对应缓冲区中,应用程序负责解析数据包,做相应的业务逻辑处理。


注解:
RFC(Request for Comment):各种Internet的正式标准都以RFC文档形式发布。
各种协议文档:RFC 1122是链路层、网络层、传输层的文档;RFC 1123是应用层的文档;RFC 1600是各种Internet协议的标准化现状。
分享到:
评论

相关推荐

    tcp/ip协议简介

    TCP/IP协议是互联网通信的...总的来说,TCP/IP协议是互联网运行的基石,它的设计和工作原理确保了网络通信的高效和可靠。了解TCP/IP协议的结构和功能对于理解网络通信至关重要,也有助于解决网络问题和提升网络安全。

    基于ARM核的嵌入式TCP/IP协议栈简化实现

    综上所述,通过对嵌入式TCP/IP协议栈的设计原理进行深入分析,并在此基础上对其进行适当的简化和优化,可以有效地满足嵌入式系统在资源有限条件下的网络通信需求。通过使用ARM核处理器和其他硬件组件,结合软件层面...

    TCP/IP协议培训教程

    #### 二、TCP/IP协议分层结构 - **四层模型**:TCP/IP模型通常被划分为四个层次,每个层次负责不同的功能。 - **链路层**(Data Link Layer):处理与物理介质的交互,包括设备驱动程序和网络接口卡,确保数据在...

    追踪linux TCP/IP 代码运行_光盘文件1

    要追踪Linux TCP/IP代码的运行,需要深入了解TCP/IP协议的工作原理、Linux内核编程以及相关的调试工具。这里我们将主要围绕以下几个知识点进行深入探讨: 1. **TCP/IP协议栈结构**:TCP/IP协议栈通常分为四层(在...

    基于NS2网络仿真平台的TCP/IP协议文献综述

    基于 NS2 网络仿真平台的 TCP/IP 协议研究重点在于通过 NS2 实现 TCP/IP 协议工作原理和运行过程。基于 NS2 平台仿真的发展方向和基于 NS2 网络模拟 TCP/IP 协议的必要性和技术原理。NS2 技术在网络模拟中发挥着极其...

    TCP/IP调试小助手

    使用TCP/IP调试小助手,用户不仅可以学习TCP/IP协议的工作原理,还能有效地解决实际遇到的网络问题,提升网络管理效率。不过,为了保障系统安全,务必按照提示以管理员身份运行,以避免不必要的风险。同时,用户应...

    TCP/IP协议的安全隐患和IPSEC协议的研究

    本文将详细介绍TCP/IP协议的基本体系结构及其存在的安全隐患,并深入探讨IPSEC协议的工作原理和实施方法。 #### 一、TCP/IP体系结构 ##### 1.1 应用层(Application Layer) 应用层位于TCP/IP模型的最顶层,主要...

    zlip 单片机上的TCP/IP C语言实现

    开发者可以通过分析和修改这个源代码,来定制适合自己项目的TCP/IP协议栈,或者理解其内部工作原理。 总结,ZLIP是针对单片机环境的TCP/IP协议栈实现,它的设计和实现充分考虑了资源限制,以最小的开销提供了核心的...

    TCP/IP测试助手

    今天我们将聚焦于一个实用工具——"TCP/IP测试助手",通过这款工具,我们可以深入理解TCP/IP协议的工作原理,并进行实际的网络通信测试。 TCP/IP测试助手是一个专为开发者和网络管理员设计的工具,它提供了直观的...

    TCP/IP高清资料详解

    这套书籍分为三卷,全面覆盖了TCP/IP协议族的各个方面,是IT行业内学习TCP/IP不可或缺的经典参考资料。 TCP/IP,全称为Transmission Control Protocol/Internet Protocol,是互联网的基础协议,它定义了网络设备...

    tcp/ip协议详解卷一

    《TCP/IP协议详解卷一》是理解网络通信基础的重要参考资料,它深入浅出地阐述了TCP/IP协议族的核心概念和工作原理。TCP/IP协议作为互联网的基础,是所有网络通信的基础框架,包括Transmission Control Protocol...

    14天学会TCP/IP协议

    《14天学会TCP/IP协议》是一门专为快速掌握TCP/IP基础知识设计的教程,它以图文并茂的方式,深入浅出地介绍了TCP/IP协议族的核心概念和技术。在这个压缩包中,包含了一本名为"14天内学会TCPIP协议(HTML)_EN"的资源,...

    TCP/IP协议简介

    理解TCP/IP协议的工作原理对于网络编程和网络管理员至关重要,它构成了互联网通信的基础。通过深入学习和掌握TCP/IP协议,可以更好地理解和解决网络中的各种问题,如数据传输的可靠性、网络性能优化以及网络安全问题...

    TCP/IP协议详解

    TCP/IP协议是互联网通信的基础,理解其工作原理对于优化网络应用性能至关重要。本书分为三个部分,逐步深入地探讨了TCP/IP协议的各个方面。 第一部分,通常会涵盖网络基础,包括TCP/IP模型的四层结构:应用层、传输...

    TCP/IP协议

    通过阅读这些PDF文档,读者可以全面理解TCP/IP协议的各个方面,从底层的数据封装到上层的应用服务,包括网络的逻辑结构、数据的传输过程以及各种协议在实际应用中的工作方式。这将对理解互联网的运作机制,进行网络...

    TCP/IP互联网体系结构

    - 网络层:IP协议在此层运行,主要功能是实现网络间的数据包路由,确保数据能从源主机传送到目标主机。 - 传输层:TCP(传输控制协议)和UDP(用户数据报协议)位于这一层。TCP提供可靠的数据传输,而UDP则提供无...

    tcp/ip协议详解

    #### 二、TCP/IP协议族的层次结构 网络协议的开发通常遵循分层原则,每一层负责特定的通信功能。TCP/IP被视为一个四层协议系统,各层职责分明: 1. **链路层**(Data Link Layer):包括操作系统中的设备驱动程序...

    TCP/IP通信c#例程

    在IT行业中,网络通信是至关重要的一个领域,TCP/IP(Transmission Control Protocol/Internet Protocol)协议栈则是互联网通信的基础。本文将深入探讨C#语言中实现TCP/IP通信的相关知识点,通过实例来阐述如何创建...

Global site tag (gtag.js) - Google Analytics