TCP/Socket学习(亚嵌网络版图书)
1. TCP/IP协议栈与数据包封装
TCP
TCP/IP网络协议栈分为四层:
TCP/IP协议栈如下图所示
应用层(Application) Telent、FTP和e-mail
传输层(Transport) TCP和UDP
网络层(Network) IP、ICMP和IGMP
链路层(Link) 设备驱动程序以及接口卡
TCP/IP的通讯过程(两台计算机之间)
应用层 FTP FTP协议 FTP 用户进程 处理应用程序细节
客户 服务器
传输层 TCP TCP协议 TCP 内核 处理通信细节
网络层 IP IP协议 IP
链路层 以太网 以太网协议 以太网
驱动程序
驱动程序
======================以太网================================
特别说明:
传输层及其以下的机制有内核控制,应用层由用户进程控制提供(如何使用socketAPI编写应用程序?)
应用程序的作用:对通讯数据的含义进行解释,
传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机
应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部(header),称为封装(Encapsulation)
见图36.3
不同的协议层对数据包有不同的称谓,
传输层叫段(segment):即TCP段
网络层叫数据报(datagram):IP数据报
链路层叫帧(frame):如以太网帧
数据传输过程:
数据封装成帧后发送到传输介质上,到达目的主机后每层协议在剥掉相应的首部,最后将应用层协议交给
应用程序处理
传输层:
网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)
的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协议。TCP是一种面向连接的、可靠的协议,有
点像打电话,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那边保证听得到,并且是按
说话的顺序听到的,说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发
的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通讯之后关闭连接。UDP协议不面向连接,
也不保证可靠性,有点像寄信,写好信放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序
寄到目的地的。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。
链路层:
链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作
新帧的开始)冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设
备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),
由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
网络层:
网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根
据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由
器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器
需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性,
数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持
物理层:
在链路层之下还有物理层,指的是电信号的传递方式早期以太网采用的的同轴电缆(现在主要用于有线电视)
、光纤等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工
作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。
注意:
虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路
层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、
IGMP与IP同属于网络层,TCP和UDP属于传输层。本文对RARP、ICMP、IGMP协议不做进一步介绍,有兴趣的读者可
以看参考资料。
1. TCP/IP协议栈与数据包封装
TCP
TCP/IP网络协议栈分为四层:
TCP/IP协议栈如下图所示
应用层(Application) Telent、FTP和e-mail
传输层(Transport) TCP和UDP
网络层(Network) IP、ICMP和IGMP
链路层(Link) 设备驱动程序以及接口卡
TCP/IP的通讯过程(两台计算机之间)
应用层 FTP FTP协议 FTP 用户进程 处理应用程序细节
客户 服务器
传输层 TCP TCP协议 TCP 内核 处理通信细节
网络层 IP IP协议 IP
链路层 以太网 以太网协议 以太网
驱动程序
驱动程序
======================以太网================================
特别说明:
传输层及其以下的机制有内核控制,应用层由用户进程控制提供(如何使用socketAPI编写应用程序?)
应用程序的作用:对通讯数据的含义进行解释,
传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机
应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部(header),称为封装(Encapsulation)
见图36.3
不同的协议层对数据包有不同的称谓,
传输层叫段(segment):即TCP段
网络层叫数据报(datagram):IP数据报
链路层叫帧(frame):如以太网帧
数据传输过程:
数据封装成帧后发送到传输介质上,到达目的主机后每层协议在剥掉相应的首部,最后将应用层协议交给
应用程序处理
传输层:
网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)
的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协议。TCP是一种面向连接的、可靠的协议,有
点像打电话,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那边保证听得到,并且是按
说话的顺序听到的,说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发
的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通讯之后关闭连接。UDP协议不面向连接,
也不保证可靠性,有点像寄信,写好信放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序
寄到目的地的。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。
链路层:
链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作
新帧的开始)冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设
备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),
由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
网络层:
网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根
据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由
器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器
需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性,
数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持
物理层:
在链路层之下还有物理层,指的是电信号的传递方式早期以太网采用的的同轴电缆(现在主要用于有线电视)
、光纤等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工
作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。
注意:
虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路
层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、
IGMP与IP同属于网络层,TCP和UDP属于传输层。本文对RARP、ICMP、IGMP协议不做进一步介绍,有兴趣的读者可
以看参考资料。