为何要写这篇博客呢? 对于为这种记忆力贼差的人来讲,写一篇博客是最好的方式,之后忘了也方便查阅。对于我这样的小白来讲,初学机网,确实得边学边记录下来,这样更能深刻理解。 注:此文仅为学习记录。前端
目前,在计算机网络领域,TCP/IP 协议名声很大且范围很广。为何短期内如此普及呢? 这就得讲到 ARPANET 的诞生。浏览器
最初,在军事领域,人们为了防止某一处受到通讯攻击而致使通讯瘫痪,采起了迂回线路组成的分布式通讯,为了实现这种类型的网络,分组交换技术应运而生。如图2.1,2.2。 ARPANET(Advanced Research Projects Agency Network,阿帕网) 是分组交换技术的典型表明,也是全球互联网的鼻祖。 在20世纪60年代,不少大学和研究机构都开始着力于新的通讯技术。ARPANET 就产生于此时。服务器
容灾性较弱的中央集中式网络 网络
容灾性较强的中央集中式网络 架构
ARPANET 网的实验,不只仅是利用几所大学与研究机构组成的主干网络进行分组交换实验,还会进行在互连计算机之间提供可靠传输的综合性通讯协议的实验。20世纪70年代前半叶,ARPANET 的一个研究机构发出了TCP/IP。在此以后,TCP/IP 的具体规范最终肯定下来。分布式
有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际上在不少状况下,它只是利用 IP 进行通讯时所必须用到的协议群的统称。具体来讲,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属 TCP/IP 的协议。TCP/IP 泛指这些协议,所以,有时也称 TCP/IP 为网络协议族。学习
TCP/IP 是当今计算机网络界使用最为普遍的协议。那么,TCP/IP 到底是什么?本节对 TCP/IP 作一个简单的介绍。动画
从图不难看出TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通讯协议的必要功能是什么”,而TCP/IP 则更强调“在计算机上实现协议应该开发哪一种程序”。编码
网络接口层(叫法不少。例如,网络接入层、网络访问层、网络连接层)利用以太网中的数据链路层进行通讯,所以属于接口层。能够把它看成让 NIC 起做用的“驱动程序”。将须要相互链接的节点接入网络中,从而为数据传输提供条件。操作系统
也能够叫作网际互联层、网络互连层。互联网层使用 IP 协议,至关于 OSI 模型的第三层网络层。IP 协议基于IP 地址转发分包数据。
TCP/IP 分层中的互联网层与传输层的功能一般由操做系统提供。尤为是路由器,它必须实现经过互联网层转发分组数据包的功能。
IP 隐含有数据链路层的功能,是分组交换的一种协议,跨越网络传送数据包,是整个互联网都能收到数据的协议,它是用过IP 地址做为主机的标识。经过IP,相互通讯的主机之间不论通过怎样的底层数据链路都能实现通讯。但它不具备重发机制,未到达对端主机或丢失都不会重发。所以属于非可靠性传输协议。
当IP 数据包在发送途中一旦发生异常没法到达对端目标地址时,须要给发送端发送一个异常的通知。ICMP 就是为这一功能而之制定的。有时也被用来诊断网络的健康情况。
从分组数据包的IP 地址中解析出物理地址(MAC地址)的一种协议。
TCP/IP 的传输层有两个具备表明性的协议。功能和OSI 参考模型中的传输层相似。
传输层最主要的功能即便可以让应用程序之间相互实现通讯。
TCP 是一种面向有链接的传输层协议。它能保证两端通讯主机之间的通讯可达。正确处理传输过程当中出现的丢包、传输顺序乱掉等异常状况,此外TCP 协议还可以利用宽带缓解网络拥堵。 TCP 的缺点,在传输过程当中,为了创建和断开链接,有时他须要至少7次的发包收包,致使网络流量的浪费,且TCP 中的各类规范不利于视频会议等场合使用。
UDP 是一种面向无链接的传输层协议。UDP 不会关注对端是否收到了传输过去的数据,若是须要检查是否收到分组数据包,或者对端是否链接到网络,则须要在应用程序中实现。 UDP 经常使用于分组数据较少或多播、广播通讯以及视频通讯等多媒体领域。
从前面的图能够看出,TCP/IP 的应用程序不只要实现 OSI 模型中的应用层的内容,还要实现会话层和表示层的功能。
TCP/IP 应用的架构绝大多数属于客户端/服务端模型。提供服务的程序叫作服务端,接受服务的程序叫作客户端。 假如数据异常、超出负载等状况,客户端能够在稍等片刻后重发一次请求。
www 中文叫万维网,是一种互联网数据读取规范,有时也叫Web、www 或 W3 。用户在Web 浏览器上上网冲浪,浏览文字、图片、动画等信息,还能播放声音以及运行程序。 浏览器与服务器之间通讯所用的协议是 HTTP(HyperText Transfer Protocol) 所传输的数据格式主要是HTML 。WWW 中的 HTML(HyperText Markup Language) 属于 OSI 应用层的协议,而 HTML 属于表示层的协议。
发送电子邮件所用到的协议叫作 SMTP (Simple Mail Tranfer Protocol)。最初,人们只能发送文本格式的电子邮件,但如今电子邮件的格式由 MIME 协议扩展之后,能够发送声音、图像等各式各样的信息。MIME 属于 OSI 参考模型的第六层--表示层。
文件传输是指保存在其余计算机硬盘上的文件转移到本地的硬盘上,或者将本地硬盘的文件传输到其余机器硬盘上的意思。 该过程使用的协议叫作 FTP(File Tranfer Protocol),传输过程当中能够选择用二进制方式仍是文本方式。 在 FTP 中进行文件传输时会创建两个TCP链接,分别是发出传输请求时所要用到的控制链接与实际传输数据时所要用到的数据链接。
在 TCP/IP中进行网络管理时,采用 SNMP(Simple Network Management Protocol)协议。使用 SNMP管理的主机、网桥、路由器等称做 SNMP 代理(Agent),而进行管理的那一段叫作管理器(Manager)。SNMP正是这个 Manager 与 Agent 所要用到的协议。 SNMP可让管理员及时检查网络拥堵问题,为扩大网络收集必要的信息。
TCP/IP 如何在媒介进行传输?
每一个分层都会对所发送的数据附加一个首部,在这个首部中包含了该层必要信息,如发送的目标地址以及协议相关信息。如图所示,在下一层的角度看,上一层收到的包所有认为是本层数据。
以下图,假设甲给乙发送电子邮件,内容是“早上好”。经过这个例子讲解 TCP/IP 通讯原理。
启动程序,收件人邮箱填好,输入内容,鼠标点击发送就开始TCP/IP 的通讯了。 首先,应用程序中会进行编码处理。至关于OSI 的表示层中的功能。应用在发送邮件的那一刻创建 TCP 链接,从而利用这个TCP 链接发送数据。将数据发送给下一层的TCP 再作实际的转发处理。
TCP 根据应用的指示,负责创建、发送数据以及断开链接、发送数据以及断开链接。TCP提供将应用层发来的数据 顺利发送到对端的可靠传输。为了实现TCP的这一功能,须要在应用层数据的前端附加一个 TCP 首部。TCP首部包括源端口号和目标端口号(用来识别发送主机跟接收主机上的应用)、序号(用以发送包中哪部分是数据)以及检验和(用来判断数据是否被损坏)。随后将附加了TCP 首部的包再发送给 IP。
IP 将TCP 传过来的 TCP 首部和 TCP 数据合起来看成本身的数据,并在TCP 首部的前端再加上本身的 IP 首部。所以,IP数据包中IP首部后面紧跟着 TCP 首部,而后才是应用的数据首部和数据自己。IP 首部中包含接收端IP 地址以及发送端 IP 地址。紧跟 IP 首部的还有用力判断后面数据是 TCP 仍是 UDP 的信息。
从IP传过来的IP 包,对于以太网驱动来讲不过就是数据。给者数据附加上以太网首部并进行发送处理。
包的接收过程是发送流程的逆序处理。
做为计网基础,TCP/IP 很重要,这仅是一小点基础,其余的还请参考下面书籍。