(二)TCP/IP基础知识--图解TCP/IP

TCP(Transmission Control Protocol)和IP(Internet Protocol)是互联网最著名的通信协议。

这里写图片描述

TCP/IP的标准化

TCP/IP的具体含义

TCP/IP是利用IP进行通信时所必须用到的协议群的统称。IP或TCMP、TCP或UDP、TELENT或FTP、以及HTTP等都属于TCP/IP的协议。

这里写图片描述

TCP/IP规范—RFC

TCP/IP的协议由IETF讨论制定。那些需要标准化的协议,被人们列入RFC(Request For Comment)文档并在互联网上公布。RPC不仅记录了协议规则内容,还包含了协议的实现和运用的相关信息,以及实验方面的信息。

RFC文档通过编号组织每个协议的标准化请求。例如IP协议的规范由RFC279制定。RFC编码是既定的,一旦成为某一RFC的内容,就不能再对其进行随意修改。若要扩展已有某个协议规范的内容,一定要有一个全新编号的RFC文档对其进行记录。

STD1记录着所有要求协议标准化的RFC状态。

RFC的获取方法

获取RFC有几种方法。最直接方法就是利用互联网查询“RFC Editor”(所有的RFC都在“RFC Editor”中管理)具体网址为:

http://wwww.rfc-editor.org.rfc/
ftp://ftp.rfc-editor.org/in-notes/

上面两个网址保存着所有RFC文件,网站中有一个名为rfc-index.txt的文件包含了所有RFC的概览。

互联网基础知识

互联网的结构

互联网中每个网络都是由骨干网(BackBone)和末端网(Stub)组成的。每个网络直接通过NOC(Network Operation Center,网络操作中心)相连。如果网络运营商不同,它的网络连接方式和使用方法也会不同。连接这种异构网络需要有IX(Internet Exchange 网络交换中心)的支持。互联网就是众多异构的网络通过IX互连的一个巨型网络。

这里写图片描述

ISP和区域网

连接互联网需要向ISP或区域网提出申请。公司企业或一般家庭申请入网只要联系ISP签约即可。

ISP(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务、信息业务、和增值业务的电信运营商。

区域网指的是在特定区域内由团体或志愿者所运营的网络。

这里写图片描述

TCP/IP协议分层模型

TCP/IP与OSI参考模型

这里写图片描述

OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。

硬件(物理层)

TCP/IP最底层是负责数据传输的硬件。这种硬件就相当于以太网或电话线等物理层设备。TCP/IP是在网络互联的设备之间能够通信的前提下才被提出的协议。

网络接口层(数据链路层)

网络接口层利用以太网中的数据链路层进行通信,属于接口层,把它当做让NIC起作用的“驱动程序”也无妨。驱动程序是在操作系统与硬件之间起桥梁作用的软件。 有时人们也将网络接口层与硬件层合并起来称为网络通信层。

互联网层(网络层)

互联网层使用IP协议,它相当于OSI模型中第3层网络层。IP协议基于IP地址转发分包数据。

这里写图片描述

TCP/IP分层中的互联网层与传输层的功能通常由操作系统提供。尤其是路由器,它必须得实现通过互联网层转发分组数据包的功能。

连接互联网的所有主机跟路由器都必须实现IP的功能。其他连接互联网的网络设备(网桥、中继器、集线器)就没必要一定实现IP或TCP的功能。

以太网
以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。

包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网。它们都符合IEEE802.3。

IP

IP是跨网络传输数据包,使整个互联网能收到数据的协议。IP协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。

IP还隐含着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的底层数据链路都能实现通信。

IP虽然也是一种分组交换协议,但是它不具备重发机制。属于非可靠传输协议。

ICMP

IP诗句包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一共能而制定的。有时它也被用来诊断网络健康状况。

ARP

从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。

传输层

这里写图片描述

传输层最主要的功能就是能够让应用程序之间实现通信。识别这些应用程序的是端口号。

TCP

TCP是一种面向有连接的传输层协议。它可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。TCP还能有效利用带宽,缓解网络拥堵。

然而,为了建立和断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。瓷碗,为了提高网络的利用率,TCP协议中定义了各种复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。

UDP

UDP是一种面向无连接的传输层协议。它不会关注对端是否真的收到传送过去的数据。

UDP常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。

应用层(会话层以上的分层)

TCP/IP分层中,将OSI参考模型中的会话层、表示层和应用层功能都集中到了应用程序中实现。

这里写图片描述

TCP/IP应用的架构绝大多数属于客户端/服务端模型。

WWW

这里写图片描述

中文叫万维网,是一种互联网上数据读取的规范。有时也叫作Web、WWW、或者W3。

浏览器与服务器之间通信所用的协议是HTTP(HyperText Transfer Protocol)。所传输数据的主要格式是HTML(HyperText Markup Language)。WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层协议。

电子邮件(E-mail)

发送电子邮件时用到的协议叫做STMP(Simple Mail Transfer Protocol)。

文件传输(FTP)

FTP(File Transfer Protocol),传输过程中可以选择用二进制方式还是文本方式。

在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所用到的数据连接。(这两种连接的控制管理属于会话层的功能)。

远程登录(TELENET与SSH)

TCP/IP网络中远程邓丽常用TELENET(TELetypewriter NETwork)和SSH (Secure Hell)两种协议。

网络管理(SNMP)

这里写图片描述

在TCP/IP 中进行网络管理时,采用SNMP(Simple Network Management Protocol)协议。使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。SNMP正式这个Manager与Agent所要用到的协议。

在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB(Management Information Base)访问。

TCP/IP 分层模型与通信示例

数据包首部

这里写图片描述

每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。

包、帧、数据报、段、消息
包是全能性术语。帧用于表示数据链路层中包的单位。而数据包是IP和UDP等网络层以上的分层中包的单位。段则表示TCP数据流中的信息。消息是指应用协议中数据的单位。

发送数据包

以甲乙发送电子邮件为例,了解TCP/IP通信的过程。

应用程序处理

点击发送邮件后,应用程序会进行编码处理。这些表吗相当于OSI的表示层功能。

编码转化后,实际邮件不一定会马上发送出去,因为有些邮件有一次同时发送多个邮件功能,也可能会有用户点击“收信”按键以后才一并接收新邮件的公恩那个。像这种何时建立通信连接何时发送数据的管理功能,从某种款发意义上看属于OSI参考模型中会话层的功能。

应用在发送邮件的那一刻建立TCO连接,从而利用这个TCP连接发送数据。它的过程首先是将应用的数据发送给下一层TCP,再做实际的转发处理。

TCP模块的处理

TCP根据应用的提示,负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输。

为了实现TCP这个功能,需要在应用层数据前端附加一个TCP首部。TCP首部中包括远端口号和目标端口号(用于识别发送主机跟接收主机上的应用)、序号(用以发送的包中哪部分是数据)以及校验和(用以判断数据是否被损坏)。随后将附加了TCP首部的包发送给IP。

IP模块的处理

IP将TCP传过来的TCP首部和TCP数据合起来当做自己的数据,并在TCP首部前端加上自己的IP首部。IP数据包中IP首部后面紧跟TCP首部,然后才是应用的数据首部和数据本身。IP首部中包含接收端IP地址以及发送端IP地址。紧跟Ip首部的还有用来判断其后面数据时TCP还是UDP的信息。

IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。

如果不知道接收端的MAC地址,可以利用ARP(Address Resolution Protocol)查找。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。

网络接口(以太网驱动)的处理

从IP传过来的IP包,对于以太网驱动来说不过就是数据。给这数据附加上以太网首部进行发送处理。以太网首部中包含接收端MAC地址。发送端MAC地址以及标志以太网类型的以太网数据的协议。根据上述信息产生的以太网数据包将通过物理层传输给接收端。发送处理中的FCS由硬件计算,添加到包的最后。设置FCS的目的是为了判断数据包是否由于噪声而被破坏。

这里写图片描述

经过数据链路的包

包流动时,从前往后依次被附加了以太网包首部、IP包首部、TCP包首部(或者UDP包首部)以及应用自己的包首部和数据。而包的最后则追加了以太网包尾(Ethernet Trailer)。

每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。

经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/UDP则会用端口号作为识别两端主机的地址。

这里写图片描述

此外,每个分层的包首部中还包含一个识别位,它是用来识别上一层协议的种类信息。例如以太网的包首部中的以太网类型,IP中的协议类型以及TCP/UDP中两个端口的端口号都起着识别协议类型的作用。

数据包接收处理

包的接收流程是发送流程的逆序过程。

网络接口(以太网驱动)的处理

主机收到以太网包以后,首先从以太网的包首部找到MAC地址判断是否为发给自己的包。如果不是则丢弃。

如果是发给自己的包,就查找以太网首部中的类型域从而确定以太网协议所传送过来的数据类型。上面的例子中数据类型显然是IP包,因此再将数据传给处理IP的子程序,如果这时不是IP而是其他诸如ARP的协议,就把数据传给ARP处理。总之,如果以太网包首部的类型域包含了一个无法识别的协议类型,就丢弃。

IP模块的处理

IP模块收到IP包首部及后面的数据部分以后,也做类似的处理。如果判断得出包首部中的IP地址与自己的IP地址匹配,则可接收数据并从中查找上一层的协议。如果上一层是TCP就将IP包首部之后的部分传给TCP处理;如果是UDP则将IP包首部后面的部分传给UDP处理。对于有路由器的情况下,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送达的主机或路由器以后再转发数据。

TCP模块的处理

TCP模块中,首先会计算一下校验和,判断数据是否被破坏。然后价差是否在按照序号接收数据。最后检查端口号,确定具体应用程序。

数据接收完毕后,接收端则发送一个“确认回执”给发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。

数据被完整地接收以后,会传给由端口号识别的应用程序。

应用程序的处理

接收端应用程序会直接接收发送端发送的数据。

SNS中的通信示例
SNS(Social Network Service),社交网络,是一种即时共享,即时发布消息给圈内特定联系人的一种服务。

分析用移动端发送或接收SNS消息的过程:

首选in,由于移动电话、智能手机、平板电脑等在进行分组数据的通信,因此在它们装入电池开机的那一刻,已经由通信运营商设定了具体的IP地址。

启动一定电话中的应用程序时,会连接制定的服务器,经过用户名、密码验证以后服务器上积累的信息就会发送到手机终端上,并由该终端显示具体内容。

SNS是基于互联网的TCP/IP应用。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值