TCP/IP与互联网
咱做技术还是得踏实,越往后走,越多的是建立下扎实的基础知识之上的。
凡事欲速则不达,一步步慢慢来,不积硅步无以至千里。
TCP/IP是当今计算机网络界使用最为广泛的协议。TCP/IP的知识对于那些想构筑网络、搭建网络以及管理网络、设计和制造网络设备甚至是做网络设备编程的人来说都是至关重要的。
一、互联网的基础知识
“互联网”一词家喻户晓,那么互联网究竟是什么?它与TCP/IP之间又有什么关系?
- “互联网”,英文单词为“Internet”。从字面上理解,internet指的是将多个网络连接使其构成一个更大的网络,所以internet一词本意为网际网。将两个以太网网段用路由器相连是互联网,将企业内部各部门的网络或公司的内网与其他企业相连接,并实现相互通信的网络也是互联网,甚至一个区域的网络与另一个区域的网络相互连接形成全世界规模的网络也可以称作互联网。然而,现在“互联网”这个词的意思却有所变化。当专门指代网络之间的连接时,可以使用“网际网”这个词。“互联网”是指由ARPANET发展而来、互连全世界的计算机网络。现在,“互联网”已经是一个专有名词了,其对应的英文单词“TheInternet”也早已成为固有名词(Internet指网际网,TheInternet指互联网,首字母大写)(与Internet对应的另一种网络叫做Intranet。该网络是指使用Internet技术将企业内部的组织机构连接起来形成一个企业范围内的封闭网络,提供面向企业内部的通信服务。)。
二、TCP/IP协议的分层模式
2.1 TCP/IP与OSI参考模型
2.2 硬件(物理层)
TCP/IP的最底层是负责数据传输的硬件。这种硬件就相当于以太网或电话线路等物理层的设备。关于它的内容一直无法统一定义。因为只要人们在物理层面上所使用的传输媒介不同(如使用网线或无线),网络的带宽、可靠性、安全性、延迟等都会有所不同,而在这些方面又没有一个既定的指标。总之,TCP/IP是在网络互连的设备之间能够通信的前提下才被提出的协议。
2.3 网卡层(网络接口层、数据链路层)
说简单点,就是硬件和软件的结合的地方。
网络接口层(有时人们也将网络接口层与硬件层合并起来称作网络通信层。)利用以太网中的数据链路层进行通信,因此属于接口层。也就是说,把它当做让NIC起作用的“驱动程序”也无妨。驱动程序是在操作系统与硬件之间起桥梁作用的软件。计算机的外围附加设备或扩展卡,不是直接插到电脑上或电脑的扩展槽上就能马上使用的,还需要有相应驱动程序的支持。例如换了一个新的NIC网卡,不仅需要硬件,还需要软件才能真正投入使用。因此,人们常常还需要在操作系统的基础上安装一些驱动软件以便使用这些附加硬件(现在也有很多是即插即拔的设备,那是因为计算机的操作系统中早已经内置安装好了对应网卡的驱动程序,而并非不需驱动。)。
2.4 互联网层(网络层)
互联网层使用IP协议,它相当于OSI模型中的第3层网络层。IP协议基于IP地址转发分包数据。
TCP/IP分层中的互联网层与传输层的功能通常由操作系统提供。尤其是路由器,它必须得实现通过互联网层转发分组数据包的功能。此外,连接互联网的所有主机跟路由器必须都实现IP的功能。其他连接互联网的网络设备(如网桥、中继器或集线器)就没必要一定实现IP或TCP的功能(有时为了监控和管理网桥、中继器、集线器等设备,也需要让它们具备IP、TCP的功能。)。
- IP
IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识(连接IP网络的所有设备必须有自己唯一的识别号以便识别具体的设备。分组数据在IP地址的基础上被发送到对端。)。IP还隐含着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的底层数据链路都能够实现通信。虽然IP也是分组交换的一种协议,但是它不具有重发机制。即使分组数据包未能到达对端主机也不会重发。因此,属于非可靠性传输协议。 - ICMP
IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。ICMP就是为这一功能而制定的。它有时也被用来诊断网络的健康状况。 - ARP
从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。
2.5 传输层
TCP/IP的传输层有两个具有代表性的协议。该层的功能本身与OSI参考模型中的传输层类似。
- TCP
TCP是一种面向有连接的传输层协议。它可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。此外,TCP还能够有效利用带宽,缓解网络拥堵。然而,为了建立与断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。此外,为了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。 - UDP
UDP有别于TCP,它是一种面向无连接的传输层协议。UDP不会关注对端是否真的收到了传送过去的数据,如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。UDP常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。
2.6 应用层(会话层以上的分层)
TCP/IP的分层中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。这些功能有时由一个单一的程序实现,有时也可能会由多个程序实现。因此,细看TCP/IP的应用程序功能会发现,它不仅实现OSI模型中应用层的内容,还要实现会话层与表示层的功能。
TCP/IP应用的架构绝大多数属于客户端/服务端模型。提供服务的程序叫服务端,接受服务的程序叫客户端。在这种通信模式中,提供服务的程序会预先被部署到主机上,等待接收任何时刻客户可能发送的请求。客户端可以随时发送请求给服务端。有时服务端可能会有处理异常[1]、超出负载等情况,这时客户端可以在等待片刻后重发一次请求。
- www
WWW(中文叫万维网,是一种互联网上数据读取的规范。有时也叫做Web、WWW或W3。)可以说是互联网能够如此普及的一个重要原动力。用户在一种叫Web浏览器(通常可以简化称作浏览器。微软公司的InternetExplore以及MozillaFoundation的Firefox等都属于浏览器。它们已被人们广泛使用。)的软件上借助鼠标和键盘就可以轻轻松松地在网上自由地冲浪。也就是说轻按一下鼠标架设在远端服务器上的各种信息就会呈现到浏览器上。浏览器中既可以显示文字、图片、动画等信息,还能播放声音以及运行程序。浏览器与服务端之间通信所用的协议是HTTP(HyperTextTransferProtocol)。所传输数据的主要格式是HTML(HyperTextMarkupLanguage)。WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议。
电子邮件
电子邮件其实就是指在网络上发送信件。有了电子邮件,不管距离多远的人,只要连着互联网就可以相互发送邮件。发送电子邮件时用到的协议叫做SMTP(SimpleMailTranferProtocol)。最初,人们只能发送文本格式(只由文字组成的信息。日语最初只能发送7bitJIS编码的文字。)的电子邮件。然而现在,电子邮件的格式由MIME(在互联网上广泛使用的、用来定义邮件数据格式一种规范。在WWW与网络论坛中也可以使用。关于这一点的更多细节请参考8.4.3节。)协议扩展以后,就可以发送声音、图像等各式各样的信息。甚至还可以修改邮件文字的大小、颜色(有时某些机能可能会因为邮件接收端软件的限制不能充分展现。)。这里提到的MIME属于OSI参考模型的第6层——表示层。电子邮件与TCP/IP的发展
有人可能会说“TCP/IP的发展离不开电子邮件!”这句话可能有两方面的含义。一方面,电子邮件使用起来非常方便,便于讨论TCP/IP协议的进度和细节。而另一方面,为了正常使用电子邮件,需要具备完善的网络环境并对某些协议进行。总之,电子邮件与TCP/IP的发展相辅相成。电子邮件协助改善协议,更加完善的协议又可以令电子邮件的形式多样化。文件传输(FTP)
文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上的意思。该过程使用的协议叫做FTP(FileTransferPrototol)。FTP很早就已经投入使用(最近在文件传输中使用WWW的HTTP的情况也在增加。),传输过程中可以选择用二进制方式还是文本方式(用文本方式在Windows、MacOS或Unix等系统之间进行文件传输时,会自动修改换行符。这也属于表示层的功能。)。在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接(这两种连接的控制管理属于会话层的功能。)。远程登陆
远程登录是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。TCP/IP网络中远程登录常用TELNET(TELetypewriterNETwork的缩写。有时也称作默认协议。)和SSH(SSH是SecureSHell的缩写。)两种协议。其实还有很多其他可以实现远程登录的协议,如BSDUNIX系中rlogin的r命令协议以及XWindowSystem中的X协议。网络管理
在TCP/IP中进行网络管理时,采用SNMP(SimpleNetworkManagementProtocol)协议。使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。SNMP正是这个Manager与Agent所要用到的协议。在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB(ManagementInformationBase)(MIB也被称为是一种可透过网络的结构变量。)访问。因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。一个网络范围越大,结构越复杂,就越需要对其进行有效的管理。而SNMP可以让管理员及时检查网络拥堵情况,及早发现故障,也可以为以后扩大网络收集必要的信息。
本节引子:
村山公保;竹下隆史;苅田幸雄;荒井透.图灵程序设计丛书:图解TCP/IP(第5版)(KindleLocations1356-1362).人民邮电出版社.KindleEdition.
这本书讲的非常好,我自己在学习的时候,觉得这个模块讲的非常好,就整理了一些出来,分享给大家。