关于TCP/IP协议栈概述以及基本内容

讲讲我这个小菜鸟是如何从对网络一窍不通到现在可以完整的说出一个报文是如何转发的初级水平,先看一下TCP/IP的介绍:

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

如此深奥的解释,相信没几个人能看的懂。。。,其实你可以简单理解为,互联网传输是分层的,就像盖房子一样,一层累一层。
举个简单的例子,就拿我们平时最常见的上网,打开浏览器,输入,浏览器上就会显示百度的界面,可能一秒都不到的时间,事实上我们的报文已经走了个来回。这么说还是有点抽象,但是要给大家讲的一点就是,在互联网的世界,一切的数据都是以报文的形式传送的,而这份报文,大致是长这样的:

image

你可能过会说,这是什么玩意,但事实上报文就是这么的不讲道理,如果你面对的是这样一个个十六进制的字符,恐怕会疯的,因为你根本无从下手,所以我们需要分层次清晰得划分一下报文的结构,划分的层次如下:

image

那为什么要叫TCP/IP协议栈内,这些协议和栈有什么关系呢,大家应该都知道栈是一种先进后出的数据结构,那这和TCP/IP协议有什么关系呢?我们就拿一个HTTP报文来说吧,HTTP报文属于应用层协议的报文,我们输入网址,首先会调用到DNS协议(域名协议,后面会讲到),然后把我们输入的网址转换为IP地址,这个IP地址大致就相当于现实生活中每个人的身份证一样,是每个网页唯一的标识,关于IP地址,后续我会详细介绍,IP协议属于网络层的协议。

我们先将HTTP报文压入一个栈中(就好像是在分装报文),然后是IP,不对,我们貌似漏了一个传输层啊,别急别介,HTTP报文在传输层用的是TCP协议,好,我们把TCP压入栈中,再讲IP层也压入栈中,至于链路层的话,就用最常见的以太网就OK了,好了,现在我们的栈里面从头至尾依次是以太帧头-IP协议-TCP协议-HTTP协议,然后我们先忽略最底层的物理层,假设这个封装好的栈一样的报文漂洋过海,来到了它的目的地(至于怎么过来的,我们后续也会讲到),当对端收到这个报文以后,也就是我们封装好的这个栈一样的东西以后该怎么办呢?

会不会也是先拿HTTP呢?因为这个报文是我们构造的一个栈,所以说它的顺序肯定也是栈,因此拿取的顺序就是以太帧头-IP协议-TCP协议-HTTP协议,发现没,最先被封装入的HTTP报文是最后才被拿出来的,这中间的细节如果能全部掌握,那基本商就算是入门了,关于这部分东西,我会在后面详细介绍,现在有这个概念就可以了。

回顾一下,写的有点乱,总结起来就是互联网是分层的,协议是如何层层递进封装和解分装的,记得大学里计算机网络是自顶向下,也就是先从应用层讲起,我觉得这样不太好,所以我会从底层讲起,也就是自底向上的学习顺序,一步步解开网络的神秘面纱!

IP地址

先简单回顾一下,TCP/IP协议栈:

数据链路层->网络层->传输层->应用层

如果为每一层加上一个ID,就像每个人都有身份证那样,那么可以这样标记:

数据链路层(MAC地址)

网络层(IPV4地址,以下简称IP地址)

传输层、应用层(端口)

这样的标签并不能完全概括这一层所有特征,但是如果掌握这些标示,就相当于是一把钥匙,可以让你快速打开这一层协议的“大门”。

和我们生活关系最密切的IP地址:

image

作为网络层的标识,IP地址这个概念可以说大家肯定都有耳闻,IP地址是一个32位的二进制数,32位是个什么概念呢?相当于是4个字节,学过C语言的同学应该知道,一个int型数据就是32位,那么IP地址的个数应该就是int的最大值4294967296,看上去很多是不是,有43亿呢,但是在互联网爆炸式发展的今天,这点IP地址还真的不够分,因此IPV6因运而生,这都是后话,以后有机会在介绍。

试想一下,某个IP地址是:11000000101010000000000100000001

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2cba9d84b3b6baed7997eb96ce56ac1f.html