第二章-TCP/IP基础知识
TCP/IP出现背景
TCP/IP具体含义
TCP(Transmission Control Protocol)
IP(Internet Protocol)
TCP/IP泛指TCP/IP网络体系结构中的各种协议
出现背景
DoD(The Department of Defense)美国国防部,通信即使遭到敌方破坏,也可以经过迂回线路进行数据通信传输。 为了实现这种网络,分组转发技术产生,它可以使多用户同时共享一条通信线路。 为了验证分组转发技术实用性,搭建了一套网络(即ARPANET [Advanced Research Projects Agency Network]),其中研发出了网络通信协议,也就是TCP/IP。 1982年TCP/IP具体规范最终确立,1983年成为ARPANET网络唯一指定的协议。
发展历史
Unix系统首先实现TCP/IP协议。ARPANET不断扩大至商用,于是出现了ISP(专门提供接入网络的服务提供商 Internet Service Provider) 。
TCP/IP标准化
互联网基础知识
-
互联网定义
internet指多个网络连接起来构成的更大的网络,即互连网。
Internet指的是互联网。 -
互联网结构
互联网是众多异构的网络通过IX(网络交换中心)互连的一个巨大网络。

TCP/IP分层模型

应用层对应应用程序
传输层和网络层对应操作系统
数据链路层和物理层对应驱动和网络接口
- 硬件(物理层)
TCP/IP中最底层,负责数据传输的硬件,如网线,网卡硬件等 - 网卡层(数据链路层)
即让NIC网络接口卡起作用的驱动程序,一个NIC网卡硬件需要驱动软件来驱动硬件以便使用。 - 互联网层(网络层)
协议有ARP,IP,ICMP(在TCP/IP模型中,ARP协议属于IP层;在OSI模型中,ARP协议属于链路层。而在TCP/IP模型中,所有定义的协议至少是在网际层(或称网络层,IP层))- 该层使用IP协议,IP协议是基于IP地址转发数据的。
- ICMP,ip数据包在发送途中一旦发生异常无法到达目标地址,需要给发生端发生一个发生异常的通知,ICMP就是为该功能制定,可以用来诊断网络状况。
- ARP,从分组数据包的IP地址解析出物理地址的一种协议。
- 传输层
传输层包含TCP协议和UDP协议,其最主要功能就是让应用程序之间通信,计算机内部通常运行着多个程序,为此通过应用程序使用的端口号来使用程序。- TCP是一种面向有连接的传输协议,保证两端通信主机之间通信可达。它能过中秋处理传输过程中丢包、传输顺序错乱等异常情况。
- UDP是面向无连接的传输协议,不关注对端是否真的收到传送过去的数据,如需检查对端是否收到则需要在程序中实现。
- 应用层(会话层以上的分层)
该层将ISO参考模型中会话层、表示层和应用层的功能都集中到了应用程序中实现。TCP/IP应用的架构绝大多数属于客户端/服务端模型。- HTTP
浏览器和服务器端通信所用的协议是http协议(HyperText Transfer Protocol。html为表示层,其为http中某些对象使用html格式表示,但其时也是文本,只是表示另一种表示方式。 - 电子邮件
发送电子邮件时用到的协议较SMTP(Simple Mail Tranfer Protocol)。最初电子邮件只能发送文本,电子邮件格式由MIME协议扩展后,就可以发声音、图像等各种信息,MIME属于OSI中的表示层,即把SMTP的内容进行转码表示。 - 文件传输(FTP)
FTP(File Transfer Protocol),可以选择二进制方式或者文本方式。 - 远程登录(TELENT和SSH)
远程登录是指登录到远程计算机上,在远程计算机上运行命令或者程序。 TCP/IP网络中远程登录常用TELNET和SSH两种协议。 - 网络管理(SNMP)
在TCP/IP中进行网络管理时,采用SNMP(Simple Network Management Protocol),使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent) ,而进行管理的那一段叫做管理器(Manager).SNMP就是Manager和Agent所用到的协议。
在SNMP代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。
- HTTP
TCP/IP具体通信
-
数据包
- 概念
包、帧、数据报、段、消息,以上五个术语都用来表述数据的单位。包可以用来描述任何一个数据、帧数据链路层中包的单位、数据报文是IP和UDP等网络层以上中包的单位、段表示TCP中数据流中的信息、消息指应用层中数据的单位。 - 数据包结构


应用层的数据+TCP/UDP首部(协议类型、源端口、目标端口) -->传输层数据包。
传输层数据包+IP首部(发送端IP、接收端IP) -->IP网络层数据包。
网络层IP数据包+以太网头(接收端MAC地址、发送端MAC地址、以太网类型)+以太网尾(循环冗余码) -->数据链路层数据包。 - 概念
-
发送数据包
假设甲给乙发送电子邮件,内容为"早上好"。-
应用程序处理
应用程序中新建邮件,将收件人邮箱填好,输入邮件内容早上好,生成一封邮件,相当于OSI应用层功能。
应用程序对邮件进行编码处理,如UTF-8编码,这些编码相当于OSI的表示层功能。
应用程序不一定马上把邮件发送出去,因为有些邮件软件有一次同时发送多个邮件的功能,这种何时发送邮件的功能相当于OSI模型的会话层功能。应用程序发送邮件后则交给传输层处理。 -
TCP模块(传输层处理)
TCP层根据应用指示,负责建立连接、发送数据、断开连接。TCP层会将用应用程序传来的数据加上一个TCP首部,包括源端口和目标端口(识别应用程序)、序号(发送数据包中哪部分数据)、以及校验和(判断数据是否损坏)。随后将附加了TCP首部的包即TCP数据包再发送给IP层。 -
IP层处理
(1) IP层则在TCP数据包前附件IP层首部,包括源IP地址、目标IP地址,即参照路由控制表决定可以接受该IP数据包的路由或主机(即下一跳ip)。 -
网络接口层
(1) 通过下一跳ip查找对应的MAC地址,可以利用ARP查看,随后添加以太网首部(接收端MAC地址、发送端MAC地址及以太网类型[上一层使用的协议])及以太网尾部(FCS循环冗余校验)加到IP数据包上,即此时为以太网包。
(2)最后以太网数据包交给以网卡驱动程序,驱动解析出mac地址,将其发送到下一个接受该数据包的相连路由器或者主机。
-
-
接收数据包
数据包的接收是发送数据包的逆序过程。-
网络接口层处理(以太网驱动)
主机收到以太网包之后,首先会判断以太网包首部找到目的MAC地址是否为发给自己的包。如果不是发给自己的包则丢弃数据。(很多NIC网卡产品可以设置为即使不是发给主机的包也不丢弃数据,但是以太网不知道mac地址则广播,一旦确定某台机器的MAC地址,就只针对该mac地址发送[发送给他的数据包],其他电脑接收不到,所有局域网arp原理也是这样)
如果接收到的恰好是发给自己的数据包,就找到以太网首部的以太网类型从而确定以太网数据包的数据类型,即以太网类型实际本数据包上一层用到的协议,本例中为ip协议,所以以太网的数据部分为ip数据包,因此传给处理ip数据包的子程序,如果此时不是IP而是其他如ARP协议,就把数据交给ARP处理。总之,如果以太网包首部的类型为一个无法识别的协议类型,则丢弃数据。 -
IP模块处理
IP模块收到IP数据包后,也做类似处理。如果判断包首部目标地址和自己的IP匹配,则接收数据并从中查找上一层的协议(在数据部分中有传输层的协议类型)。 在路由器中,接收端地址往往不是自己的地址,此时需要借助理由控制表确定下面要将该数据包发送到那个主机或者路由器。 -
TCP模块处理
TCP模块中,首先会计算校验和,判断数据是否损坏。然后检测是否在按照序号接收数据。最后检查端口后,确定具体的应用程序。
TCP层,数据接收完毕后,接收端则发送一个"确认回执"到发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据一直反复发送。
数据被完整地接收后,会传给由端口标识的应用程序。 -
应用程序处理
应用程序接收到数据后,解析数据按一定编码等转换数据,如何解析邮件格式数据,并获取收件人邮件地址。如果主机B中没有收件人的邮件信箱,那么会主机B返回给发送端一个"无此收件人"的报错信息。
确认有收件人邮件信箱后,则邮件会被保存到本机硬盘,如果保存正常,那么邮件接收端会返回一个"处理正常"的回执给发送端。反之,一旦出现磁盘满等使邮件未能成功保存等问题,就会发送一个"处理异常"回执给发送端。
-

浙公网安备 33010602011771号