首页 > 代码库 > TCP/IP概述

TCP/IP概述

TCP/IP通常被分为四层,如下图所示:


通常,应用层的程序属于用户进程,关心程序的细节,而其余的三层则在内核中执行,关心通信的细节。应用层的程序不关心自己的主机是在以太网上还是其它类型的网络中,它只将数据向下传递,不同类型的物理网络通过路由器相互连接,这就使得不同网络的应用程序能够相互通信了。网络层提供的是不可靠的服务,TCP在网络层之上为它提供了可靠的运输层,包括超时重传、确认分组等机制。

1、应用层
网络应用程序及其应用层协议存留的地方。应用层协议分布在多个端系统上,一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。将应用层的信息分组称为报文

2、运输层
提供了在应用程序端点之间传送应用层报文的服务。
TCP:向应用程序提供面向连接的服务(确保传递、流量控制、拥塞控制)。是一个端系统到另一个端系统的可靠传递。
UDP:向应用程序提供无连接的服务(不可靠,无流量控制,无拥塞控制)。
将运输层分组称为报文段。运输层协议在生成报文首部时要存入一个16bit应用程序标识符,即端口号。

3、网络层
负责将称为数据报的网络层分组从一台主机移动到另一台主机。源主机中的因特网运输层协议(TCP/UDP)向网络层递交运输层报文段和目的地址。
IP协议:定义了数据报中各个字段以及端系统和路由器如何作用于这些字段。将因特网连接在一起的粘合剂。
选路协议:决定路由。
IP层传给链路层的数据单元称作IP数据包。由于TCP、UDP、ICMP、IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标志,以表明数据属于哪一层。

4、链路层
将分组从一个节点发送到另一个节点(将整个帧从一个网络元素移动到邻近的网络元素)。
以太网、WIFI、点对点(PPP)协议。
链路层分组成为帧(46-1500字节)。网络接口分别要发送和接收IP、ARP、RARP数据,所以也要在以太网帧首部加入标识符,来区别是哪种类型的数据。

5、物理层
将帧中一个个比特从一个节点移动到下一个节点。例如以太网具有许多物理层协议:关于双绞铜线,关于同轴电缆,关于光纤等等。跨越这些链路移动一个比特的方式不同。

运输层:提供了进程之间的逻辑通信,TCP包中保存有源端口号和目的端口号。
网络层:提供了主机之间的逻辑通信,IP数据报的格式中保存有源IP和目的IP。

网络层提供点到点(主机间)的服务,而运输层提供端到端(进程间)的服务。TCP和UDP最基本的任务:将端系统间的IP交互服务拓展为进程之间的交互服务。

互联网中每个网络接口对应一个IP地址,五类IP地址如下:

各类IP地址的范围如下:


服务器端需要指定端口,只有这样客户端才知道确定连接那个端口。服务器常用知名端口号来标识,例如:
  • FTP:TCP21
  • Telnet:TCP23
  • TFTP:UDP69
而客户端连接服务器程序后占用的端口,默认是由系统自动分配的系统中可用的端口(临时端口号),这个端口号码,可以通过服务端调用accept函数得到。客户端通常对它使用的端口号并不关心。通常临时端口号的范围在1024-5000之间。

参考:
《TCP/IP详解》第1章。