分层
TCP/IP协议栈通常分四层,每层负责不同的通信功能
- 链路层:处理与电缆的物理接口细节
- 网络层:处理分组在网络中的活动,提供点到点的通信(源到目的可能有多个点,逐点传播)。包含ip协议、ICMP协议、IGMAP协议
- 传输层:为两主机的应用程序提供端到端的通信(从源到目的传播)。包含TCP和UDP
- 应用层:处理特定应用程序的细节。常用的包含FTP协议、SMTP协议、SNMP协议
除了应用层,其他三层都是在内核中执行的
IP协议不可靠,只是尽快将分组从源点传到目的点,但TCP协议在其上提供了一个可靠的传输层
连接网络的方式:
- 路由器:路由器是为不同物理网络接口提供连接,它的实现通常是在网络层。可以是一个路由器盒子,也可以是一个主机
- 网桥:网桥是在链路层对网络进行互连
TCP/IP倾向使用路由器连接网络
TCP/IP的分层
- TCP:可靠的传输层协议
- UDP:不可靠的传输层协议
- IP:网络层主要协议,不可靠。TCP和UDP都会利用IP层进行数据传输
- ICMP:IP协议的附属协议。被IP协议用来与其他主机或路由器交换错误报文和其他重要信息
- IGMP:Internet组管理协议,将UDP数据报广播到多个主机
- ARP:地址解析协议,将IP地址转换成物理地址
- RARP:逆地址解析协议,将物理地址转换成IP地址
互联网的地址
互联网每个接口都有唯一的Internet地址,即IP地址
IP地址32位,有五类不同的IP地址:
各类IP地址范围是:
域名系统
简称DNS,是一个分布式数据库,提供IP地址到主机名之间的映射,保证基于IP或主机名都可以访问主机
可以通过系统函数通过IP查询主机名,或通过主机名查询IP
封装
数据从应用层到链路层会经过层层封装
分用
封装是数据包从源主机自顶向下不断被“打包”的过程,分用就是数据包到目的主机自底向上不断被“拆开”的过程
每次协议通过分用来确定报文首部的协议标识,来确定接收数据的上层协议
客户-服务端模型
大部分网络应用都是客户-服务器模型,这种模型下有两种服务类型
- 重复型:服务器为客户请求提供串行服务
- 并发型:服务器为客户请求提供并行服务
一般而言,TCP服务器是并发型,UDP服务器是重复型
端口号
TCP和UDP使用16位端口号来识别应用程序
服务器端口一般常驻,其中1~1023是提供给一些系统服务使用。如FTP服务器是21,Telnet服务器端口为23,TFTP服务器端口是69
客户端并不关心其端口,一般只是临时使用,保证客户端唯一即可。大多数TCP/IP实现采用1024~5000作为客户端临时端口