初识TCP/IP协议 初识TCP/IP协议

TCP/IP 全称是(Transmission Control Protocol / Internet Protocol),传输控制协议/网际协议。TCP/IP定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。

TCP/IP 其实是由 OSI 七层协议简化而来。在<<鸟哥的私房菜>>网络协议中是这样介绍的:

1.为什么要分层?

整个网络连接的过程相当复杂,包括硬件、软件数据封包与应用程序的互相链接等等, 如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只程序都需要改写啊!真麻烦!

那怎办?没关系,我们可以将整个网络连接过程分成数个阶层 (layer),每个阶层都有特别的独立的功能, 而且每个阶层的程序代码可以独立撰写,因为每个阶层之间的功能并不会互相干扰的。 如此一来,当某个小环节出现问题时,只要将该层级的程序代码重新撰写即可。所以程序撰写也容易,整个网络概念也就更清晰! 那就是目前你常听到的 OSI 七层协定 (Open System Interconnection) 的概念啰!

2.OSI 七层协议的过程

初识TCP/IP协议
初识TCP/IP协议
初识TCP/IP协议
初识TCP/IP协议

应用程序将数据放入第七层的包裹,再将第七层的包裹放到第六层的包裹内, 依序一直放到第一层的最大的包裹内,然后传送出去给接收端。接收端的主机就得由第一个包裹开始,依序将每个包裹拆开, 然后一个一个交给对应负责的阶层来视察!而在每个包裹表面都会有个重要的信息,这些信息包括有来自哪里、要去哪里、接收者是谁等等, 而包裹里面才是真正的数据。同样的,在七层协议中,每层都会有自己独特的表头数据 (header),告知对方这里面的信息是什么,而真正的数据就附在后头啰!

初识TCP/IP协议
初识TCP/IP协议

3.既然有了OSI 七层协议,为什么还要有TCP/IP协议?

OSI七层协议的架构太过严谨了,因此程序撰写相当不容易,所以造成它在发展上面些许的困扰。而由 ARPANET 发展而来的 TCP/IP同样也是使用 OSI 七层协议的观念,所以同样具有分层的架构,只是将它简化为四层,在结构上面比较没有这么严谨,程序撰写会比较容易些。
初识TCP/IP协议
初识TCP/IP协议

TCP/IP 将应用、表现、会谈三层整合成一个应用层,在应用层上面可以实作的程序协议有 HTTP, SMTP, DNS 等等。 传送层则没有变,不过依据传送的可靠性又将封包格式分为连接导向的 TCP 及非连接导向的 UDP 封包格式。网络层也没有变,主要内容是提供了 IP 封包,并可选择最佳路由来到达目标 IP 地址。数据链结层与物理层则整合成为一个链结层,包括定义硬件讯号、 讯框转位串的编码等等,因此主要与硬件 (不论是区网还是广域网) 有关。

4.TCP/IP运作实例:打开Yahoo网站的过程

应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;

应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并给予一个应用层表头,再向传送层丢去;

传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予一个 TCP 封包的表头,向网络层丢去;

网络层:将 TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来源与目标的 IP 啰),向链结层丢去;

链结层:如果使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,包裹到 MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机上。

等到 Yahoo 收到你的包裹后,在依据相反方向拆解开来,然后交给对应的层级进行分析,最后就让 Yahoo 的 WWW 服务器软件得到你所想要的数据,该服务器软件再根据你的要求,取得正确的资料后,又依循上述的流程,一层一层的包装起来, 最后传送到你的手上!