计算机网络-----TCP/IP协议族
TCP/IP 协议族的具体含义
从字面意义上讲,有人可能会认为TCP/IP是指TCP与IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP 或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP的协议。它们与TCP或IP的关系紧密,是互联网必不可少的组成部分。TCP/IP一词泛指这些协议,因此,有时也称TCP/IP为网际协议族。
TCP/IP分层模型
在1中我们介绍了OSI参考模型各个分层的作用。接下来我们要探讨各个协议与OSI参考模型中各个分层之间的对应关系。
下图列出了TCP/IP与OSI分层之间的大致关系。不难看出,TCP/IP 与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。
应用层
TCP/IP的分层中,将OSI参考模型中的会话层、表示层和应用层的功能都集中到了应用程序中实现。这些功能有时由一个单一的程序实现,有时也可能会由多个程序实现。因此,细看TCP/IP的应用程序功能会发现,它不仅实现OSI模型中应用层的内容,还要实现会话层与表示层的功能。
TCP/IP应用的架构绝大多数属于客户端/服务端模型。提供服务的程序叫服务端,接受服务的程序叫客户端。在这种通信模式中,提供服务的程序会预先被部署到主机上,等待接收任何时刻客户可能发送的请求。
客户端可以随时发送请求给服务端。有时服务端可能会有处理常,超出负载等情况,这时客户端可以在等待片刻后重发一次请求。
WWW服务
WWW可以说是互联网能够如此普及的一个重要原动力。用户在一种叫Web浏览器的软件上借助鼠标和键盘就可以轻轻松松地在网上自由地冲浪。也就是说轻按一下鼠标,架设在远端服务器上的各种信息就会呈现到浏览器上。浏览器中既可以显示文字、图片、动画等信息,还能播放声音以及运行程序。
浏览器与服务端之间通信所用的协议是HTTP ( HyperText Transfer Protocol );所传输数据的主要格式是HTML ( HyperText Markup Language);www中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议。
E-mail(电子邮件)
电子邮件其实就是指在网络上发送信件。有了电子邮件,不管距离多远的人,只要连着互联网就可以相互发送邮件。发送电子邮件时用到的协议叫做SMTP( Simple Mail Tranfer Protocol)。
最初,人们只能发送文本格式"的电子邮件。然而现在,电子邮件的格式由MIME协议扩展以后,就可以发送声音、图像等各式各样的信息。甚至还可以修改邮件文字的大小、颜色。这里提到的MIME属于OSI参考模型的第6层-------表示层。
文件传输(FTP)
文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上的意思。
该过程使用的协议叫做FTP ( File Transfer Prototol)。FTP很早就已经投人使用,传输过程中可以选择用二进制方式还是文本方式。
在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。
远程登录(TELNET/SSH)
远程登录是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。TCP/IP 网络中远程登录常用TELNET和SSH两种协议。
其实还有很多其他可以实现远程登录的协议,如BSD UNIX 系中rlogin 的 r 命令协议以及X Window System中的X协议。
网络管理(SNMP)
在TCP/IP中进行网络管理时,采用SNMP ( Simple Network Management Protocol)协议。使用SNMP管理的主机、网桥、路由器等称作SNMP代理( Agent),而进行管理的那一段叫做管理器 ( Manager)。SNMP正是这个Manager与Agent 所要用到的协议。
在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB ( Management Information Base)"访问 。因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB 属于表示层协议。
一个网络范围越大,结构越复杂,就越需要对其进行有效的管理。而SNMP可以让管理员及时检查网络拥堵情况,及早发现故障,也可以为以后扩大网络收集必要的信息。
传输层
TCP/IP的传输层有两个具有代表性的协议。该层的功能本身与OSI参考模型中的传输层类似。
端口号
传输层最主要的功能就是能够让应用程序之间实现通信。计算机内部,通常同一时间运行着多个程序。为此,必须分清是哪些程序与哪些程序在进行通信。识别这些应用程序的是端口号。
端口号(Port)标识了一个主机上进行通信的不同的应用程序 ;在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看)。
端口号范围划分
0 - 1023:
知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是默认的。
1024 - 65535:
操作系统动态分配的端口号,客户端程序的端口号, 就是由操作系统从这个范围分配的。
知名端口号:
SSH服务器, 使用22端口;FTP服务器, 使用21端口;TELNET服务器, 使用23端口;HTTP服务器, 使用80端口;HTTPS服务器, 使用443端口号。(自己写程序的时候要避开这些端口号~)
UDP协议
UDP首部格式
图6.24展示了UDP首部的格式。除去数据的部分正是UDP的首部。UDP首
部由源端口号,目标端口号,包长和校验和组成。
- 源端口号(Source Port):表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端口号。没有源端口号的时候该字段的值设置为0。可用于不需要返回的通信中。
- 目标端口号( Destination Port):表示接收端端口,字段长度16位。
- 包长度(Length):该字段保存了UDP首部的长度跟数据的长度之和。单位为字节(8位字 节)。
- 校验和(Checksum):校验和是为了提供可靠的UDP首部和数据而设计。在计算校验和时,如下图所示,附加在 UDP伪首部与UDP数据报之前。通过在最后一位增加一个“0”将全长增加16倍。此时将UDP首部的校验和字段设置为“0”。然后以16比特为单位进行1的补码和,并将所得到的1的补码和写人校验和字段。
接收主机在收到UDP数据报以后,从IP首部获知IP地址信息构造UDP伪首部,再进行校验和计算。校验和字段的值是校验和字段以外剩下部分的1的补码和。因此,包括校验和字段在内的所有数据之和结果为“1