老规矩–妹妹镇楼:
20世纪60年代,以美国国防部(DoD)为中心的组织开始了通信技术的研究,DoD认为在通信传输的过程中,即时遭到了敌人的攻击和破坏,也可以经过迂回线路实现最终通信,保证不中断。倘若在中心位置的中央节点遇到了攻击,就会影响整个网络的通信传输,如果网络呈现出由众多迂回线路组成的分布式通信,使其即时在某一处收到攻击,也能够保持通信。
为了实现这种分布式通信,分组交换技术应运而生,它可以使多个用户同一时间共享一条通信线路进行通信,从而提高了线路的使用效率,降低了成本。
为验证分组交换技术,在美国搭建了4个节点,该网络称为ARPANET,是互联网的鼻祖。
ARPANET的实验,不仅是进行分组交换的实验,还会进行在计算机之间提供可靠传输的通信协议实验,因此TCP/IP这个协议被研发出来了。但是,由于ARPANET网络的节点个数限制,该协议的应用也受到了限制,后来由于UNIX系统实现了TCP/IP协议,才被广泛推广应用,最终基于TCP/IP协议的网络互联网诞生了。
有人可能会认为TCP/IP是两种协议,实际上指的是利用IP进行通信时所用到的协议群的统称,如IP或ICMP,TCP或UDP,TELNET或FTP,以及HTTP都属于TCP/IP的协议。
应用协议: HTTP, SMTP, FTP, TELNET, SNMP;
传输协议:TCP, UDP;
网际协议:IP,ICMP, ARP;
路由控制协议:RIP, OSPF, BGP;
需要标准化的协议,被人们列入RFC(Request For Comment)文档在互联网上公布,所有人都可以来讨论,RFC文档通过编号组织每个协议的标准化请求,每个RFC文档只要确定了就不能修改了,如果要修改,只能重新发行一个新的RFC文档,并且作废旧的RFC文档。
互联网中的每个网络都是由骨干网和末端网组成的,每个网络之间都是通过NOC(网络操作中心)相连,如果网络的运营商不同,它的网络连接方式和使用方法也会不同,连接这种异构网络需要有IX(网络交换中心)的支持,所有,互联网就是由众多的异构网络通过IX互联的一个巨型网络。
连接互联网需要向ISP或 区域网提出申请,家庭申请入网与ISP签约即可。
之前我们介绍了OSI模型,TCP/IP的各种协议也能够对应到OSI参考模型中,但是OSI模型注重的是通信协议必要的功能是什么,而TCP/IP则更强调在计算机上实现协议应该开发哪种程序。TCP/IP主要分为5层,应用层,传输层,互联网层,网络接口层,硬件层。
最底层是负责数据传输的硬件,相当于以太网或电话线路等物理层的设备。
利用以太网中的数据链路层进行通信。
使用IP协议,相当于网络层,IP协议基于IP地址转发分包数据。TCP/IP分层中的互联网层和传输层的功能通常由操作系统提供,尤其是路由器,必须得实现通过互联网层转发分组数据包的功能。该层有三个协议:
IP是跨越网络传送数据包,使整个互联网都能够收到数据的协议,使用IP地址作为主机的标识。虽然IP也是分组交换的一组协议,但是不具有重发机制,属于非可靠性传输协议。
而ICMP协议是为了在使用IP协议发送过程中出现异常时,向发送端发送一个异常通知,通常用于诊断网络的健康状况。
ARP协议从分组数据包的IP地址中解析出物理地址。
传输层的功能就是让应用程序之间实现通信,在计算机内部通常运行着多个程序,为此必须分清是哪些程序与 哪些程序在进行通信,通过端口号来识别。该层有两个协议:
TCP是一种面向有连接的传输层协议,可以保证两端通信主机之间的通信可达,能够正确处理传输过程中丢包,乱序的问题,还能够有效利用带宽。但是不利于音频,视频等传播。
UDP是一种面向无连接的传输层协议,不会关注对端是否真的收到了数据,常用于数据较少,多播或广播通信以及视频通信。
将OSI模型中的会话层,表示层,应用层都集中到了应用程序中实现,这些功能有的使用单个程序,有的使用多个程序实现。
现在应用的架构很多斗士CS架构或BS架构,浏览器和服务器之间通信的协议时HTTP,所传输数据的主要格式是HTML,HTTP属于OSI应用层的协议,HTML属于表示层的协议。
发送电子邮件使用的协议时SMTP,最初只能发送文本格式,经过MIME协议扩展后,可以发送图像,声音等二进制信息,属于表示层协议。
文件传输使用的是FTP(File Transfer Protocol),传输过程可以使用二进制或者文本格式。在FTP中传输文件会建立两个TCP连接,分别是发出传输请求的控制连接和实际传输数据的数据连接。这两种连接的控制管理属于会话层的功能。
TELNET(Teletypewriter Network)和SSH(Secure SHell)两种协议。
进行网络管理时,采用SNMP协议,使用SNMP管理的主机,网桥,路由器等成为SNMP代理,而进行管理的一端称为管理器。管理员可以及时检查网络的拥堵情况,发现故障。
每个分层,都会对所发送的数据附加一个首部,这个首部中包含了该层的必要信息,如发送的目标地址,自己的地址和协议类型,在下一层开来,上一层收到的包 都是本层的数据,再为它添加上本层的首部即可继续转发。
帧是数据链路层的包的单位,数据包是IP和UDP等网络层以上的包的单位,端则是TCP数据流中的信息,消息是指应用协议中数据的单位。
应用程序对消息进行编码处理,相当于OSI的表示层功能,然后会话层会负责何时建立通信以及何时发送数据的管理功能,在发送的那一刻建立TCP连接,将应用的数据发送给TCP,再做实际的转发处理。
TCP根据应用的指示,负责建立连接,发送数据以及断开连接,TCP提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现这一功能,需要在应用层数据的前端加上一个TCP首部,包括源端口号和目标端口号,序号(表示该数据包是真个数据的第几字节的序列号),以及校验和(判断数据是否被损坏),最后发送给IP。
在TCP传来的数据前端加上自己的IP首部,包括接收端IP地址和发送端IP地址,紧跟IP首部的还有用来判断后面数据是TCP还是UDP的信息。IP包生成之后,参考路由控制表决定接受此IP包的路由或主机,随后IP包被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。如果不知道接收端的MAC地址,利用ARP查找,知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。
给IP传来的数据加上以太网首部,包含接收端MAC地址和发送端MAC地址以及标志为以太网类型的以太网数据的协议,然后通过物理层传输给将诶手段,设置FCS来判断数据包是否由于噪声而被破坏。