1.ISO 参考模型
因特网协议栈中的层
人们已经进行了一些讨论关于如何将TCP/IP参考模型映射到到OSI模型。由于TCP/IP和OSI模型组不能精确地匹配,还没有一个完全正确的答案。
另外,OSI模型下层还不具备能够真正占据真正层的位置的能力;在传输层和网络层之间还需要另外一个层(网络互连层)。特定网络类型专用的一些协议应该运行在网络层上,但是却运行在基本的硬件帧交换上。类似协议的例子有地址解析协议和生成树协议(用来保持冗余网桥的空闲状态直到真正需要它们)。然而,它们是本地协议并且在网络互连功能下面运行。不可否认,将两个组(更不用说它们只是运行在如ICMP等不同的互连网络协议上的逻辑上的网络层的一部分)整个放在同一层会引起混淆,但是OSI模型还没有复杂到能够做更好的工作。
下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:
下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:
7 | 应用层 | 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP |
6 | 表示层 | 例如XDR、ASN.1、SMB、AFP、NCP |
5 | 会话层 | 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets |
4 | 传输层 | 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL |
3 | 网络层 | 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25 |
2 | 数据链路层 | 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP |
1 | 实体层 | 例如线路、无线电、光纤 |
通常人们认为OSI模型的最上面三层(应用层、表示层和会话层)在TCP/IP组中是一个应用层。由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭连接组成,并且在TCP和UDP下的各种应用提供不同的端口号,这些功能能够被单个的应用程序(或者那些应用程序所使用的库)增加。与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。
4 | 应用层 (OSI 5 到 7层) | 例如HTTP、FTP、DNS (如BGP和RIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分) |
3 | 传输层 (OSI 4层) | 例如TCP、UDP、RTP、SCTP (如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分) |
2 | 网络互连层 (OSI 3层) | 对于TCP/IP来说这是因特网协议(IP) (如ICMP和IGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上) |
1 | 网络接口层 (OSI 1和2层) | 例如以太网、Wi-Fi、MPLS等。 |
其中,每层都只能与紧邻的层通信。下面介绍一下各层执行的任务
- 网络接口层,主要是负责将信息从一台计算机传输到远程的计算机。将数据流划分为定长的帧。在我们生活中,它主要是包括网络物理介质 网线,网卡,网卡有个全球唯一的的MAC地址。
- 网络互联层的主要任务就是找到一条线路让两台计算机能互联。网络层也负责其他链接信息。比如传输的数据划分定长。网络层还分配网络中唯一的的地址,就是我们耳熟的IP地址.
- 传输层,计算机之间建立通信链接还远远不够,该层的任务就是控制应用程序之间的数据传输。就是TCP和UDP模型。而我们所说的socket的编程,就是ip+tcp端口才能唯一确定两个应用程序之间互相通信。
- 应用层就是面向应用的一层了。应用层主要是负责两个应用程序传输实际的数据内容了。
给出一个比较直接的数据流图,
下节简单介绍一些socket编程基本函数。
更多文章,欢迎访问http://blog.csdn.net/wallwind