协议系列之TCP/IP协议

根据前面介绍的几种协议,将IP协议、TCP协议、UDP协议组合起来,于是便有了TCP/IP协议。现在很多的应用的通信都是建立在TCP/IP协议的基础上,运用非常广泛,很有必要对其学习一下。

打个不太恰当的比方,TCP/IP协议可以看成是邮局与邮递员的关系(实际TCP/IP协议族会包含四层,应用层、传输层、网络层、链路层)。这个协议族中的IP协议定位到哪台计算机,而具体到这台计算机的哪个端口(应用程序)就需要TCP协议,一个属于网络层,一个属于传输层,互相依赖,提供有效的解决通信问题的措施。这就好比在90年代,你写一封情书给你远方的情人,情书先从寄出邮局被送往目的地邮局,接着当地可爱的邮递员把情书送给你的情人同志手上,你俩感情得到升温。

图2-2-5-1,TCP/IP协议其实还包含了UDP协议,即由TCP、IP、UDP三个协议组成。此图展示了TCP/IP协议的通信模型,左边是主机A,通过通信信道(一般是以太网)跟主机B进行通信。假设主机A的应用程序要发送数据到主机B的应用程序,主机A的应用程序会通过socket的API访问TCP协议、UDP协议提供的服务,再通过IP协议,利用TCP/IP协议以通信信道为介质与主机B建立起连接,传送到主机B的数据依次经过IP协议层、TCP协议层,被主机B的应用程序接收。

图2-2-5-1   TCP/IP通信模型

   

这里四层中每一层的功能都不一样。应用层主要发送用户的应用数据,由系统调用交给运输层处理;运输层负责建立连接,分割数据发送,释放连接,数据重组及错误处理;网络层负责确定将数据发送到哪个路由。链路层主要是对二进制用户数据进行传输校验。下面从不同角度来说明每个层次的区别:

(1)     运行进程态。应用层运行在用户程序进程中,属于用户态;其它三层运行在系统内核进程,属于核心态。

(2)     通信方式。传输层是进程与进程之间的通信,是端对端的;网络层是机器与机器之间的通信,是点对点的。

(3)     传输数据单元。传输层上是TCP或UDP报文段;网络层上是IP数据报文;数据链路层是帧数据。

(4)     寻址方式。网络层通过IP寻址;链路层通过MAC寻址(传输层通过端口寻址;一般而言MAC地址是世界唯一的、不变的,计算机通信其实是靠MAC地址,而非IP地址,但MAC地址不能变,不灵活,所以应用层用IP进行寻址)。

 

以图2-2-5-1,分解这四层数据传输的流程:

①  主机A的应用层组织好数据,发给传输层,并调用系统API通知TCP建立连接。

②  主机A传输层接收应用层数据,组织好TCP报文,发送给网络层,进行连接建立,其中会加上目标跟源端口。

③  主机A网络层接收传输层TCP数据,组织好IP报文,发送给链路层,其中会加上目标跟源IP地址。

④  链路层接收网络层数据,组装好链路报文,其中会加上MAC地址。

⑤  链路数据由网卡发送,根据目标IP找到最近的路由器的MAC地址,将数据包发往它,由它确定下一个路由,最终将数据包发送到主机B的网卡。

⑥  主机B的网络层获取IP数据包,根据IP协议拆包。

⑦  主机B的传输层获取TCP数据包,根据TCP协议拆包。

⑧  主机B应用层获取TCP拆包后的数据包进行解析,完成相应的业务逻辑处理。

在这四个层中,数据报文的的变化可以简单用图2-2-5-2表示,应用层的数据到达传输层后,会被TCP协议打包数据(此图假设使用TCP协议),这是会添加一个TCP头部报文,而应用层数据被封装成TCP报文体。继续往下到网络层,TCP报文又被IP协议打包,这时添加了一个IP头部报文,整个TCP报文被封装成IP报文体。最后到达链路层,IP报文被链路相关协议打包,这时添加了帧头部报文和帧尾部报文,整个IP报文被封装成链路协议的报文体。


图2-2-5-2 TCP/IP四层数据的封装

 

对于我们研究服务器,需要对传输层与网络层的报文比较深入理解,下面以一个更加详细的图对传输过程中TCP与IP报文组合进行说明。根据TCP缓冲大小,会被分成一个个TCP分段,每个分段都由IP分组与TCP段组成。在前几章已经对IP协议报文结构详细说明,这里不再赘述,IP报文的选项区域会被装入TCP报文,这样就把TCP报文嵌进IP报文,即可利用IP协议进行发送传输数据。

图2-2-5-3 TCP/IP协议报文

==========广告时间==========

鄙人的新书《Tomcat内核设计剖析》已经在京东预售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

=========================

时间: 2024-11-08 18:11:43

协议系列之TCP/IP协议的相关文章

《趣学CCNA——路由与交换》一第2章 TCP/IP协议2.1 TCP协议简介

第2章 TCP/IP协议 趣学CCNA--路由与交换 在上一章,我们郑重其事地介绍了无聊的OSI七层参考模型,并浓墨重彩地讲述了其中每一层负责提供的功能.OSI模型出身名门.条理清晰,只有一个"小小的"缺点,那就是一直没人太拿它当回事儿.所以,如果对它太认真,你就败了. 我们是有职业精神的,因此在介绍OSI模型时反复强调了这个模型是如何地曲高和寡.我们在上一章中花大篇幅介绍OSI模型有三个目的:一是延续各类技术教材的惯例,以免将本书作为技术开蒙读物的读者在与别人讨论技术问题时,因全然不

《Linux高性能服务器编程》——第1章 TCP/IP协议族 1.1 TCP/IP协议族体系结构以及主要协议

第1章 TCP/IP协议族 现在Internet(因特网)使用的主流协议族是TCP/IP协议族,它是一个分层.多协议的通信体系.本章简要讨论TCP/IP协议族各层包含的主要协议,以及它们之间是如何协作完成网络通信的. TCP/IP协议族包含众多协议,我们无法一一讨论.本书将在后续章节详细讨论IP协议和TCP协议,因为它们对编写网络应用程序具有最直接的影响.本章则简单介绍其中几个相关协议:ICMP协议.ARP协议和DNS协议,学习它们对于理解网络通信很有帮助.读者如果想要系统地学习网络协议,那么R

《TCP/IP路由技术(第一卷)(第二版)》一第1章 TCP/IP回顾1.1 TCP/IP协议层

第1章 TCP/IP回顾 TCP/IP路由技术(第一卷)(第二版)本章包括以下主题: TCP/IP协议层: IP包头(IP Packet Header): IPv4地址: 地址解析协议(ARP): Internet控制消息协议(ICMP): 主机到主机层. 考虑到这本书的书名是<TCP/IP路由技术>,有必要从回顾TCP/IP的基本知识开始讲起,然后再讲述如何进行TCP/IP路由选择.如果读者正在准备Cisco认证互连网专家(Cisco Certified Internetwork Exper

TCP/IP协议 详解

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成.TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准.协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到

透视你的网络 完美测试TCP/IP协议简介

安装网络硬件和网络协议之后,我们一般要进行TCP/IP协议的测试工作,那么怎样测试才算是比较全面的测试呢?我们认为,全面的测试应包括局域网和互联网两个方面,因此应从局域网和互联网两个方面测试,以下是我们在实际工作中利用命令行测试TCP/IP配置的步骤: 1. 单击"开始"/"运行",输入CMD按回车,打开命令提示符窗口. 2. 首先检查IP地址.子网掩码.默认网关.DNS服务器地址是否正确,输入命令ipconfig /all,按回车.此时显示了你的网络配置,观查是否

通过配置TCP/IP协议的方式使用DNS

本文描述了如何在Windows XP中通过配置TCP/IP协议的方式使用域名服务(DNS). DNS是一种用以将域名转换为IP地址的Internet服务.在Internet上,当您在网络操作过程中使用域名时,DNS服务负责将该域名转换为对应的IP地址.举例来说,域名www.reskit.com可能被转换为IP地址178.145.135.6. 在企业网络环境中,你可以对Windows XP进行适当配置,以便使其自动检测域控制器所使用的IP地址.此外,您也可以手工配置域控制器IP地址.下面将具体描述

[SQL]对于“无法用TCP/IP协议和远端SQL Server数据库连接”问题

server|数据|数据库|数据库连接|问题 对于"无法用TCP/IP协议和远端SQL Server数据库连接"问题 首先,需要确定您的SQL Server版本,以及它安装了哪些补丁,这很重要.如果补丁没有安装或者没有安装最新的ServicePack,请先安装. 然后,你可以试试看telnet SqlServerName 1433,看是否可以连接上.1433是SQl Server用TCP/IP协议的默认端口.你如果连这个端口都无法连接上,那就应该查查网络配置了. 第3,您得到的错误描述

XP系统下如何安装TCP/IP协议?

  XP系统下如何安装TCP/IP协议? 方法一 单击"开始"菜单,弹出的列表单击"控制面板"项 在"控制面板"里找到并双击打开"网络连接" 在"本地连接"上鼠标右键,单击"属性" 进入"常规"选项卡界面,单击"安装" 在选择网络组件类型列表中选中"协议",单击"添加" 在选择网络协议界面中,单击"

怎样解决网络无法链接TCP/IP协议变灰色

  1.使用注册表来设置 步骤1.开始--运行--regedit.exe,打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesWinsock HKEY_LOCAL_MACHINESystemCurrentControlSetServicesWinsock2 步骤2.用记事本打开%winroot%infnettcpip.inf文件,找到:[MS_TCPIP.PrimaryInstall]Characteristics