第2章 TCP-IP的工做方式
TCP/IP协议系统
为了实现TCP的功能,TCP/IP的建立者使用了模块化的设计。TCP/IP协议系统被分为不一样的组件,每一个组件分别负责通讯过程的一个步骤。这种模块化的好处在于让厂商方便地根据特定硬件和操做系统对协议软件进行修改。这样厂商在使用光纤网络时就没必要从新构建一个全新的TCP/IP,只要修改其中的某一层就好。编程
TCP/IP模型
graph TD
应用层-->传输层
传输层-->网际层
网际层-->网络访问层
- 网络访问层:提供了与物理网络链接的接口。针对传输介质设置数据的格式,根据硬件的物理地址实现数据的寻址,对数据在物理网络中的传递提供错误控制
- 网际层:提供独立于硬件的逻辑寻址,从而让数据可以在具备不一样物理结构的子网之间传递。提供路由功能来下降流量,支持网间的数据传递(网间是指多个局域网互相链接而造成的较大网络,好比大公司里的网络或Internet)。实现物理地址与逻辑地址的转换。
- 传输层:为网络提供了流量控制、错误控制和确认服务。充当网络应用程序的接口
- 应用层:为网络排错、文件传输、远程控制和Internet操做提供了应用程序,还支持api,从而使得针对特定操做系统编写的程序可以访问网络
当TCP/IP协议软件准备经过网络传递数据时,发送端计算机上的每一层协议都在数据上添加层信息,对应于接收端计算机上相应的层。例如:发送端计算机的网际层会向数据添加报头信息,这个过程有时也被称为封装。在接收端,当数据在协议栈里传递时,这些报头信息被逐步去除。api
OSI模型
出现原因:网络业界针对网络协议体系有一个标准的七层模型,称为“开放系统互连(OSI)”模型,这是ISO(国际标准化组织)为了标准化网络协议系统所作出的规范,目的在于提升网络互联性,而且方便软件开发人员以一种开放的方式来使用协议标准。网络
OSI把网络访问层的功能划分为数据链路层和物理层,将应用层划分为应用层、表示层、会话层。tcp
graph TD
应用层-->表示层
表示层-->会话层
会话层-->传输层
传输层-->网络层
网络层-->数据链路层
数据链路层-->物理层
各层级的具体做用:模块化
- 物理层: 把数据转换为传输介质上的电子流或模拟脉冲,而且监视数据的传输
- 数据链路层:提供与网络适配器相连的接口,维护子网的逻辑连接
- 网络层:支持逻辑寻址与路由选择
- 传输层:为网络提供错误控制和数据流控制
- 会话层:在计算机的通讯应用程序之间创建会话
- 表示层:把数据转换为标准格式,管理数据加密与压缩。
- 应用层:为应用程序提供网络接口,支持文件传输、通讯等功能的网络应用
数据包
在数据发送过程当中,其流程是从堆栈的上到下,每一层都把相关信息(称为报头)捆绑到实际的数据上。包含报头信息和数据的数据包就做为下一层的数据,再次被添加报头信息和从新打包。接受过程是偏偏相反的,在数据从下到上通过协议栈的过程当中,每一层都解开相应的报头,好比:接收端计算机上的网际层会使用网际层的头信息,传输层会使用传输层的报头信息。加密
数据包在每一层具备不一样的形式和名称。操作系统
- 在应用层生成的数据包称为消息。
- 在传输层生成的数据包封装了应用层的消息,若是它来自于传输层的TCP协议,就称为分段;若是来自于传输层的UDP协议,就被称为数据报
- 网际层的数据包封装了传输层的片断,被称为数据报
- 网络访问层的数据包封装了数据报,被称为帧。帧被访问层的最低子层转化为比特流
基本的TCP/IP协议联网系统
- 数据从工做于应用层的协议、网络服务或应用编程接口经过TCP或UDP端口传递到两个传输层协议(TCP或UDP)中的一个。程序能够根据须要经过TCP或UDP访问网络
- TCP是面向链接的协议。面向链接的协议提供更复杂的流量控制和错误控制。TCP可以确保数据的发送质量,比UDP更可靠,但因为须要进行额外的错误检测和流量控制,所以比UDP的速度慢
- UDP是个无链接的协议,比TCP快,可是不可靠,它把错误控制的责任推给了应用。
- 数据分段传递到网际层,IP协议在此提供逻辑寻址信息,而且把数据封装为数据报。
- IP数据报进入网络访问层,传递到与物理网络相链接的软件组件。网络访问层建立一个或多个数据帧,从而进去物理网络。在像以太网这样的局域网系统中,帧可能包含得到的物理地址信息。而这些是由网际层的ARP维护
- 数据帧被转化为比特流,经过网络介质进行传输