什么是TCP/IP协议

1.写这篇博客的目的

最近学习了网络有关的内容,学习整理了《鸟哥的Linux私房菜-服务器》篇的第二章,从什么也不知道的小白逐渐认识了网络是什么,这篇博客的目的是想做一个科普,让许多和我一样的小白了解网络是什么。当然,本文的内容出自鸟哥的博客鸟哥的Linux私房菜 非常感谢鸟哥的博客以及无私分享。

2.网络是什么

2.1.什么是互联网

网络的本质就是把许多的计算机连接在一起。当然,不只是计算机,我们的手机,ipad, 还有打印机等等,都是通过网络与其他设备相关联的。当然,打印机我们更多接触的是有线设备,而手机,ipad接触的是无限网络,打印机只和本地的计算机连接,手机和ipad可以连接公网。

2.2.用什么把不同的设备连接起来

计算机与计算机之间的连接不仅仅是用一根线接起来那么简单。在连接的时候,我们需要面对的是不同的操作系统,例如服务器大多数Linux,而我们的笔记本用Window的概率更大,那么不同设备之间的连接需要什么呢?那就是协议,协议就是大家商量好用什么样的方式连接。我们现在广泛采用的TCP/IP传输协议,即传输控制/网络协议。

2.3.TCP/IP协议

TCP/IP网络协议是为了保证网络之间数据传输的准确。该协议是由OSI的七层网络协定转换过来的,为了简化OSI的七层协定,该协议为四层,分别为应用层,传输层,网络层以及链结层(由上到下,越接近硬件,越下,越接近数据本身,越向上)
协议的示意图如下所示(图片链接为鸟哥的Linux私房菜在这里插入图片描述
这个协议是怎么保证我的设备连接到其他设备上的呢?

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

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

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

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

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

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

3.TCP/IP的链结层内容

链结传输中最重要的就是MAC的概念,MAC是指网卡的物理地址,这个地址一般情况下是不可以去更改的,一个设备可以由多个网卡,但是对于特定的某个网卡,其只能对应一个MAC。
整个链结构的传播核心就是通过以太网,实现设备与设备之间的连接。MAC单独是指网卡,所以和设备的操作系统等没有任何关系,是独立存在的。
总结来说,一个MAC可以对应多个ip地址,一个MAC只能对应一个网卡,网卡与网卡之间的传输是通过以太网实现的。

4.TCP/IP的网络层封包

4.1.IP地址

ip地址由32bit的数值组成,也就是32个0和1,由于其组成是16进制的,而人类其实看不习惯16进制的数,因此我们将其转换为十进制,其表示与转换的形式如下:

00000000.00000000.00000000.00000000 ->0.0.0.0
11111111.11111111.11111111.11111111 ->255.255.255.255

在一个ip地址中,包含了两层信息,一个是这个ip的Net_ID,另一个是这个ip的host_ID。在一个局网中,我们尽量保证ip的Net_ID是一致的,例如在我们的家庭网络中,路由器的地址一般为192.168.1.1。
在这里插入图片描述
例如,我家的路由器的登陆ip就是192.168.1.1,那么只要有手机或者计算机连上这个网络,那么路由器会自动给这个设备分配地址。分配的地址范围为192.168.1.2到192.168.1.254,其中192.168.1.0与192.168.1.255都是保留的。
那么ip中的Net_ID就是192.168.1,而Host_ID就是1~254。为什么192.168.1.1中,只有前24个bit是固定的,后面8个是移动的?这个涉及到了子网掩码的概念。

4.2.子网掩码

子网掩码在我们的设备中经常看到。我们看到的子网掩码数值为255.255.255.0。我们以192.168.1.1这个IP为例,该IP地址以及子网掩码如下所示。

ip地址 192.168.1.1 --11000000.10101000.00000001.00000001
子网掩码 255.255.255.0 --11111111.11111111.11111111.00000000

子网掩码的值意味着IP的前24bits的值是固定不变的,那么该ip的范围就可以定义为192.168.1.1~192.168.1.254,因为
192.168.1.255与192.168.1.0都是保留的,不可用。
那么假设,对于同样的网络,我的子网掩码变成255.255.255.1了呢?那么,IP的前25个bits值都是固定的,作为Host_Net。对于新增加的当作Host_Net的1位bit,其有两种情况,要么是1,要么是0。我们分别举例这两种情况:

第一种情况:
11000000.10101000.00000001.00000000--192.168.1.0
子网掩码:255.255.255.128  11111111.11111111.11111111.10000000(虽然对应的IP值是0,但是也是固定不变的)
IP变化范围:192.168.1.1~192.168.126 
192.168.1.0与192.168.1.127都是保留的
第二种情况:
11000000.10101000.00000001.00000000--192.168.1.128
子网掩码:255.255.255.128  11111111.11111111.11111111.10000000(虽然对应的IP值是1,但是也是固定不变的)
IP变化范围:192.168.129.1~192.168.254
192.168.1.128与192.168.1.255都是保留的

这样,一个局网就又可以被细分为两个了,方便管理。在我们日常使用路由器的时候,IP都是自动分配,我们的子网掩码默认都是255.255.255.0。没有什么大影响。

4.3.IP与MAC之间的关系

在偏向硬件层面的数据传输是通过MAC的,而IP又是我们连接网站需要填的,在internet中非常重要。那么IP与MAC当然需要一个协议关联起来,这个协议就是ARP 与 RARP协议了。

5.TCP/IP的传送层内容

传送层是确保IP封包会不会被接收,确保通信双方都了解数据被正确接收了,这就需要TCP协议了。我们首先放一张鸟哥的图 ,阐述一下MAC,IP,TCP封包之间的联系。
在这里插入图片描述
TCP的封包是放在IP封包中的,IP的封包是放在MAC中的,实际的数据经过TCP,IP以及MAC打包后,通过以太网络传输到指定的服务器,服务器接收后,再一层一层拆包,得到传输的数据。

5.1.端口设置

在一个服务器中,由很多个服务在同时进行,要去访问不同的服务怎么区分呢?就需要端口了。这里举例一个我的服务器。我的服务器中的docker在运行两个容器(两个软件),那么我要访问这个服务器的不同功能怎么办呢?

  • 点击hostname:80 (默认就是80),进入的就是文件存储的界面
  • 点击hostname:32400,就是另一个程序了
    在这里插入图片描述

5.2.TCP三项交握

为了确保数据传输,在传输过程中有三个阶段,假如我的客户端要登陆www.baidu.com
A. 客户端向百度的服务器发送一个封包请求。
B. 服务器收到封包请求并确认接收后,给一个确认信号给客户端
C. 客户端收到确认信号后,得知上一个封包正确接收,那么就发送包含信息的 封包
D. 服务器确认接收的封包是上述所提的,开始接收封包。

5.3.DNS服务器

我们在登陆一个 网站时,并不会选择输入网站的IP,而且选择网站的域名,那么DNS协议的作用就是将IP与域名一一对应。在 Linux 里面,DNS 主机 IP 的设定就是在 /etc/resolv.conf 这个档案里面。

6一组可以连上 Internet 的必要网络参数

从上面的所有说明当中,我们知道一部主机要能够使用网络,必须要有 IP ,而 IP 的设定当中,就必须要有 IP, Network, Broadcast, Netmask 等参数,此外,还需要考虑到路由里面的 Default Gateway 才能够正确的将非同网域的封包给他传送出去。 所以说,一组合理的网络设定需要哪些数据呢?呵呵!就是:

  • IP ----192.168.1.2 (路由器分配给我的) x.x.x.x(服务器的IP)
  • Netmask 255.255.255.0 (子网掩码)
  • Network 192.168.1.0 (保留数据)
  • Broadcast 192.168.1.255 (保留数据)
  • Gateway 路由器,把我的包给互联网上的服务器
  • DNS (将IP与域名绑定)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值