作为一个不合格的测试实习生,每天往返公司要花费四小时,不想荒废这些时间,突然有了了学习新知识的想法。从那就从TCP/IP开始吧,至于为什么是这个,算是为自己逃过的课忏悔吧
TCP/IP协议乍一看很高级,但究其效用,不就是个通信方式嘛,就好比寄快递你要写上详细地址一样,TCP/IP的每一层都代表着“始发地”与“目的地”的相关信息。论其根源,其实TCP/IP协议就是OSI协议的一个转化衍生。
何为OSI(Open System Interconnect)协议,其定义了网络互联的七层框架:应用层(为应用程序提供服,常见协议HTTP,HTTPS,FTP,POP3、SMTP)、表示层(数据格式转化、数据加密)、会话层(建立、管理和维护会话)、传输层(建立、管理和维护端到端的连接)、网络层(IP地址及路由选择)、数据链路层(提供介质访问和链路管理)、物理层,在OSI协议中,有一个很容易被忽视,确又很重要的特点,那便是通信对等,为了使数据分组从源传送到目的地,源端OSI模型的每一层都必须与目的端的对等层进行通信,在每一层通信过程中,使用本层自己协议(就好比寄信,填XX省的位置投递的时候也要解释成XX省,本来要寄往广东省河北路的信件,如果不对等解析,就可能变成河北省广东路了)。
进入正题,来详细谈谈TCP/IP(我认为英文可以更好的让我们理解这个协议:Transmission Control Protocol/Internet Protocol)。TCP/IP协议族共有四个层次,应用层(Telnet、FTP和e-mail等)、运输层(TCP和UDP)、网络层(IP、ICMP和IGMP)、链路层(设备驱动)。从上面的内容可以看出,实则TCP协议和IP协议只是协议族中的一部分,分别用于运输层和网络层。IP协议提供的是一个不可靠的服务,他只是尽可能快的将分组从源节点送到目的节点,那么保障数据传输可靠性只能依托其上层协议来进行了。TCP协议采用了超时重传、发送和接受端到端的确认分组等机制来保障可靠性。
如下图所示,TCP/IP协议族中不同层次都有其对应的协议。
应用层就不说了,其主要功能就是为具体应用提供网络服务的。到运输层来讲,有两种常用的协议,他们分别是TCP和UDP协议,既然都是运输层协议,那么他俩有什么不同呢?TCP是面向连接的,实现点对点的通信,数据传输可靠,但传输效率相对较低。相反UDP是无连接的,以广播的形式,可以实现一对一、一对多、多对一、多对多的交互通信,尽最大可能进行交付,传输效率较高,但可靠性不能得到保障。
IP作为网络层的主要协议,TCP和UDP协议均有使用,TCP和UDP每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息,我们常用的两个流行的诊断工具ping和traceroute都使用了ICMP。IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。
在链路层上,ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。
想要实现互联网上的数据传输,互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址),IP地址长32位(即32个bit),IP地址具有一定的结构,五类不同的互联网地址格式如下。
这些32位的地址通常写成四个十进制的数,其中每个整数对应一个字节,区分各类地址的最简单方法是看它的第一个十进制整数,由于互联网上的每个接口必须有一个唯一的IP地址,因此必须要有一个管理机构为接入互联网的网络分配IP地址,这个管理机构就是互联网络信息中心( Internet Network Information Centre),称作InterNIC。InterNIC只分配网络号,主机号的分配由系统管理员来负责。
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作 一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),这个过程称作封装。TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment),IP传给网络接口层的数据单元称作IP数据报(IP datagram),通过以太网传输的比特流称作帧(Frame)。
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)
说了这么多协议上的东西,还是要说一些实际应用层面的东西,大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务,这种服务可以分为两类:重复型或并发型。
其中,重复型:等待一个客户请求的到来-> 处理客户请求->发送响应给发送请求的客户->返回第1步,由此可以看出,重复型服务器主要的问题发生在第二步上,在这个时候,它不能为其他客户机提供服务。与其对应的,并发型服务器采用以下步骤:等待一个客户请求的到来-> 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。(这个步骤如何进行取决于操作系统,生成的新服务器对客户的全部请求进行处理,处理结束后,终止这个新服务器)->返回第一步
好了,概况性的东西就这些了,后面我们再一起慢慢拆分学习吧!
////上述内容参照TCP/IP详解,如有侵权请联系修改删除////