文章目录
- 互联网与TCP/IP的关系
- TCP/IP与OSI参考模型
- 硬件(物理层)
- 互联网层(网络层)
- IP
- ICMP
- ARP
- 传输层
- TCP
- UDP
- 应用层
- WWW
- 电子邮件(E-Mail)
- 文件传输(FTP)
- 远程登录(TELNET与SSH)
- 网络管理(SNMP)
- TCP/IP通信实例
- 数据包首部
- 发送数据包流程
- 应用程序处理
- TCP模块的处理
- IP模块的处理
- 网络接口(以太网驱动)的处理
- 经过数据链路的包
- 数据包接收流程
- 网络接口(以太网驱动)的处理
- IP模块的处理
- TCP模块的处理
- 应用程序处理
互联网与TCP/IP的关系
互联网进行通信时,需要相应的网络协议,TCPIP原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。
TCP/IP与OSI参考模型
TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序
硬件(物理层)
负责数据传输的硬件,相当于以太网或电话线路等物理层的设备。只要在物理层所用的传输媒介不同,网络的带宽、可靠性、安全性、延迟等都会有所不同。
##网络接口层(数据链路层)
利用以太网中的数据链路层进行通信,因此属于接口层。可以把它当作让NIC起作用的”驱动程序“。
互联网层(网络层)
使用IP协议,基于IP地址转发分包数据。
IP
跨越网络传送数据包,使整个互联网都能收到数据。
非可靠性传输协议。
ICMP
用于IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,给发送端发送一个发生异常的通知。
它有时也被用来诊断网络的健康状况。
ARP
从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。
传输层
能让应用程序之间实现通信,通过端口号识别不同的应用程序。
TCP
面向有连接的传输层协议。
能正确处理丢包、传输顺序乱掉等异常情况,能有效利用带宽,缓解网络拥堵。
建立与断开连接,有时需要至少7次的发包收包,导致网络流量的浪费。为了提高网络的利用率,定义了各种各样复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。
UDP
面向无连接的传输层协议。
常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。
应用层
OSI中的会话层、表示层和应用层
WWW
浏览器与服务端之间通信所用的协议是HTTP(HyperText Transfer Protocol)。
所传输数据的主要格式是HTML(HyperText Markup Language)。
WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议。
电子邮件(E-Mail)
发送电子邮件时用到的协议叫做SMTP (Simple Mail Tranfer Protocol)。
电子邮件的格式由MIME协议扩展,MIME属于OSI参考模型的第6层——表示层。
文件传输(FTP)
文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上。
传输过程中可以选择用二进制方式还是文本方式(表示层)
在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接(这两种连接的控制管理属于会话层的功能。)。
远程登录(TELNET与SSH)
网络管理(SNMP)
使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。
在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB (Management Information Base)(MIB也被称为是一种可透过网络的结构变量。)访问。
因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。
TCP/IP通信实例
数据包首部
发送数据包流程
已发送给邮件为例
应用程序处理
- 首先进行编码处理,相当于表示层功能;
- 编码结束后,何时建立通信连接何时发送数据的管理,属于会话层功能;
- 应用在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。它的过程首先是将应用的数据发送给下一层的TCP,再做实际的转发处理。
TCP模块的处理
TCP根据应用的指示,负责建立连接、发送数据以及断开连接。
为了实现TCP的这一功能,需要在应用层数据的前端附加一个TCP首部。
TCP首部中包括:
- 源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、
- 序号(用以发送的包中哪部分是数据)以及
- 校验和(Check Sum,用来检验数据的读取是否正常进行的方法。)︰(用以判断数据是否被损坏)。
随后将附加了TCP首部的包再发送给IP。
IP模块的处理
IP在TCP首部的前端在加上自己的IP首部。
IP首部中包含接收端IP地址以及发送端P地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息。
IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。
如果尚不知道接收端的MAC地址,可以利用ARP (Address Resolution Protocol)查找。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。
网络接口(以太网驱动)的处理
给IP包附加上以太网首部并进行发送处理。
以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。
根据上述信息产生的以太网数据包将通过物理层传输给接收端。
发送处理中的**FCS (Frame Check Sequence))**由硬件计算,添加到包的最后。设置FCS的目的是为了判断数据包是否由于噪声而被破坏。
经过数据链路的包
经过数据链路时的包,看这一张图就够了!
每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。详见上图
数据包接收流程
网络接口(以太网驱动)的处理
首先从以太网的包首部找到MAC地址判断是否为发给自己的包。如果不是发给自己的包则丢弃数据(很多NIC产品可以设置为即使不是发给自己的包也不丢弃数据。这可以用于监控网络流量。)。
如果是发给自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。
在这个例子中数据类型显然是IP包,因此再将数据传给处理IP的子程序,如果这时不是IP而是其他诸如ARP的协议,就把数据传给ARP处理。
如果以太网包首部的类型域包含了一个无法识别的协议类型,则丢弃数据。
IP模块的处理
如果判断得出包首部中的IP地址与自己的IP地址匹配,则可接收数据并从中查找上一层的协议。
如果上一层是TCP就将IP包首部之后的部分传给TCP处理;如果是UDP则将IP包首部后面的部分传给UDP处理。
对于有路由器的情况下,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送达的主机或路由器以后再转发数据。
TCP模块的处理
首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。
数据接收完毕后,接收端则发送一个“确认回执”给发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。
数据被完整地接收以后,会传给由端口号识别的应用程序。
应用程序处理
接收端应用程序会直接接收发送端发送的数据。通过解析数据可以获知邮件的收件人地址是乙的地址。如果主机B上没有乙的邮件信箱,那么主机B返回给发送端一个“无此收件地址”的报错信息。
如果可以接收的话,邮件会被保存到本机的硬盘上。如果保存也能正常进行,那么接收端会返回一个“处理正常”的回执给发送端。反之,一旦出现磁盘满、邮件未能成功保存等问题,就会发送一个“处理异常”的回执给发送端。
由此,用户乙就可以利用主机B上的邮件客户端,接收并阅读由主机A上的用户甲所发送过来的电子邮件——“早上好”。