说来内疚,准备写关于网路方面的知识许久了,结果到明天才即将动笔,好了,屁话不多说,写一些自己能读懂的入门知识linux中tcp/ip协议实现及嵌入式应用,对自己来说是一种知识的总结,也希望能帮到一些想了解网路知识的童鞋。
万事开头难,之后中间难,最后结尾难。。。哈哈,不扯这些心灵砒霜了,讲讲我这个小新手是怎样从对网路一窍不通到如今可以完整的说出一个报文是怎样转发的中级水平,先看一下TCP/IP的介绍:
TransmissionControlProtocol/InternetProtocol的缩写suse linux,中译名为传输控制合同/因特网互联合同,亦称网路通信合同,是Internet最基本的合同、Internet国际互联网络的基础,由网路层的IP合同和传输层的TCP合同组成。TCP/IP定义了电子设备怎么连入因特网,以及数据怎么在它们之间传输的标准。合同采用了4层的层级结构,每一层都呼叫它的下一层所提供的合同来完成自己的需求。浅显而言:TCP负责发觉传输的问题,一有问题就发出讯号,要求重新传输,直至所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
这么高深的解释,相信没几个人能看的懂。。。,虽然你可以简单理解为,互联网传输是分层的,如同建房子一样,一层累一层。举个简单的事例linux系统,就拿我们平常最常见的上网,打开浏览器,输入,浏览器上还会显示百度的界面,可能1秒都不到的时间,事实上我们的报文早已走了个来回。如此说还是有点具象,而且要给你们讲的一点就是,在互联网的世界,一切的数据都是以报文的方式传送的,而这份报文,大致是长这样的:
你可能过会说,这是哪些玩意儿,但事实上报文就是如此的不讲道理,假如你面对的是这样一个个十六补码的字符,估计会疯的,由于你根本无从下手,所以我们须要分层次清晰得界定一下报文的结构,界定的层次如下:
那为何要叫TCP/IP合同栈内,那些合同和栈有哪些关系呢,你们应当都晓得栈是一种先进后出的数据结构,那这和TCP/IP合同有哪些关系呢?我们就拿一个HTTP报文来说吧,HTTP报文属于应用层合同的报文,我们输入网址,首先会调用到DNS合同(域名合同,旁边会提到),之后把我们输入的网址转换为IP地址,这个IP地址大致就相当于现实生活中每位人的身分证一样,是每位网页惟一的标示,关于IP地址,后续我会详尽介绍,IP合同属于网路层的合同。
我们先将HTTP报文压入一个栈中(就似乎是在分装报文),之后是IP,不对,我们其实漏了一个传输层啊,别急别介,HTTP报文在传输层用的是TCP合同,好,我们把TCP压入栈中,再讲IP层也压入栈中,至于链路层的话,就用最常见的以太网就OK了,好了,如今我们的栈上面从头至尾依次是以太帧头-IP合同-TCP合同-HTTP合同,之后我们先忽视最底层的数学层linux中tcp/ip协议实现及嵌入式应用,假定这个封装好的栈一样的报文漂洋过海,来到了它的目的地(至于如何过来的,我们后续也会提到),当对端收到这个报文之后,也就是我们封装好的这个栈一样的东西之后该如何办呢?
会不会也是先拿HTTP呢?由于这个报文是我们构造的一个栈,所以说它的次序肯定也是栈,因而拿取的次序就是以太帧头-IP合同-TCP合同-HTTP合同,发觉没,最先被封装入的HTTP报文是最后才被掏出来的,这中间的细节倘若能全部把握,那基本商即使是入门了,关于这部份东西,我会在前面详尽介绍,如今有这个概念就可以了。
回顾一下,写的有点乱,总结上去就是互联网是分层的,合同是怎样层层递进封装和解分装的,记得学院里计算机网路是自顶向上,也就是先从应用层讲起,我认为这样不太好,所以我会从底层讲起,也就是自底向下的学习次序,一步步解开网路的神秘面纱!