TCP/IP协议就是这个玩意(不看错过50K!程序员应该知道的知识)持续更新中

相信大家在编程的学习或应用中,对网络编程都有一定的需求。我们都知道http/https属于TCP/IP协议,也都用到过get,post等方法,但是想要真正的了解这些东西的原理。我认为TCP/IP协议还是很有必要了解一下的。

TCP/IP协议详解

在这里插入图片描述

序言

随着计算机技术与网络技术的不断发展与完善。人们对网络的依赖度越来越高,网络也不断满足着人们对未知世界的渴望与对物质世界的探寻。其实TCP/IP协议在其中就发挥了很大的作用,比如当你在跟远方的朋友写电子邮件,:SMTP - 简单邮件传输协议,它会将邮件上传到SMTP服务器,然后在通过一台或几台服务器的中转送到目标机器上。使用 IMAP 连接到邮件服务器。POP 协议被邮件程序用来取回邮件服务器上面的邮件。当你浏览网页时边会用到http协议,当你在网页浏览中输入敏感信息时,https协议也会成为你的帮手,而这些协议都属于TCP/IP协议。

1.1.1什么是网络协议

网络协议是计算机网络中进行数据交换而建立的规则,标准或者约定的集合。有了这个规范,在数据交换中接收方与发送方便可以遵循相同的协议而进行交换。可以说网络协议使得可上网的设备能够相互交换信息。TCP/IP协议就是一种很常见的网络协议,Internet上的计算机使用该协议。

1.2.1TCP/IP协议(历史和由来不需要可跳过这一部分)

TCP/IP协议可以说是老生常谈了,它不是一个协议而是一个协议族的统称。起初,这个协议是用于保障国防军事通信的,即使被敌人攻击也可以迂回通信。后来就演变成了TCP/IP协议族。直到1983年成为了ARPANET网络中的唯一指定协议。值得一提的是几个我们常用的协议都是属于这个协议族的比如TCP,IPP,ICMP,HTTP等协议其实都属于这个协议族

1.2.2TCP/IP协议层次结构(和各层次功能笼统介绍)

在这里插入图片描述
其中TCP/IP模型的应用层对应着OSI参考模型的应用层+表示层+绘画才能,TCP/IP模型的运输层对应着OSI参考模型的运输层,TCP/IP模型的网络层对应着OSI模型的网络层,TCP/IP模型的网络接口层对应着OSI参考模型的数据链路层和物理层。
TCP/IP协议中的应用层为应用程序提供服务并规定通信细节,传输层就是两台主机间的通信。网际层让数据能够在具有不同的结构的子网之间传递,自动寻找地址和路由选择并且会选择最佳路径。网络访问层提供了与物理网络连接的接口。

1.3.1详细介绍网络接口(访问“whatever你明白就行”)层

TCP/IP协议中我们的网络接口层是对应物理层和数据链路层的,那么我们就通过分析物理层与数据链路层来学习网络接口层。

我们的学习采用1.先介绍一下这两个层然后2.引入网络体系3.然后融合在一起讲解,毕竟协议在网络体系下才能体现它的价值,不然真的是纸上谈兵一样。相信能对你有所帮助。因为我也是看了很多TCP/IP介绍的博文了,但是真的很多都知识单纯的讲解各个层和工作原理,没有引入到网络体系中,我认为这是对学习者不友好的。

物理层是整个开放系统的基础也是OSI模型的第一层层,它的作用是提供数据通路和可靠环境。这样说来比较抽象我们把它具象化,对计算机来说网络适配器就对应物理层。根据网络适配器我们还可以分成两类,第一类是网络适配器比如网卡,第二类是虚拟网络适配器,如宽带拨号连接。(这个地方不理解的可以看一下我的另一篇博客介绍了关于网络的硬件)

https://blog.csdn.net/weixin_45950372/article/details/104628707

数据链路层,数据链路层是OSI模型的第二层,它在物理层和网络层之间起了承接的作用,数据传输的起始位置就是由它定义的并且通过一些规则来为数据传输提供保障。因为它既可以定义起始位置又可以对数据传输提供保证所以它也经常被划分为两个子层。分别如下:

  • 介质访问控制(MAC Media Access Control):提供了跟网络适配器(对计算机来说你可以理解为物理层)的接口。它还有一个大家都知道名字叫MAC,我们经常会说到MAC地址,也就是说的网卡出厂的时候被厂家固化的硬件地址,除了MAC地址还有一个叫做MAC驱动的东西,它是网络适配器的驱动程序。||这之前为介质访问控制部分后面为对MAC地址的展开和一些网络相关的内容。 Mac地址确实是有东西可说的,一会我们还会再详细的介绍MAC地址。MAC地址这个东西是可以被我们用来探知很多消息的,像是IP地址,主机名…都是可以通过一些网络工具通过Mac地址查出来的。一谈到网络很多人会想到网络渗透哈,其实网络渗透的洪水攻击也是与我们的MAC地址和以太帧有关的。另外也不要以为不让别人看自己的电脑别人就没法知道你的Mac地址,其实只需要和对方在同一局域网就可以通过一些工具查到对方的Mac地址进而查出IP,主机名,title。
    (洪水攻击原理这两句不想看可以不看)通过伪造大量的以太网数据包,填满交换机的存储表,使其无法添加新的Mac地址导致交换机不能对新机器查找对应的端口,只能广播转发给所有端口。然后所有的主机就都接收到该数据帧了。
    洪水攻击
  • 逻辑链路控制(LLC Logical Link Control):它对经过子网传递的帧进行错误检查,并且管理自网上通信设备之间的链路。

在网络体系中介绍网络接口层

脱离了网络的通信协议就没啥意义了…所以我们要综合网络体系来具体的展开网络接口层的知识。

没有网络体系的物理层,就是没有灵魂的物理层。                                                                                                                 —尼古拉斯*赵四

网络体系定义了物理网络的构成,和对应的通信协议。{举个例子有线网络(比如用双绞线上网的)和无线网络(比如无线网卡上网的.)}网络体系可以分成网络构成和通信方式两大方面,这两大方面又可以分成四个方面。

  • 数据帧格式:定义了数据传输的格式。

  • 访问方法:定义了计算机使用传输介质(比如双绞线,光纤就属于传输介质)的规则。

  • 布线类型:定义了网络适配器和其他网络设备的连接方式。

  • 布线规则: 定义网络适配器和网络设备连接规范。比如接口类型。
    由于我们生活中对网络接口设备(比如:双绞线,光纤,无线网卡,有线网卡)的需求不一样,所以出现了数据传输过程中使用不同的终端设备的情况,在物理层中识别的网络接口设备当然也是不同的,所以网络体系又可以分为四大类型(前面是功能的四大方面这个是本身的四大类型):
    。。。

  • IEEE 802.3(以太网):大多数家庭啊还有很多企业都用的这个,其实就是基于线缆的网络。(比如双绞线,光纤)

  • IEEE 802.11(无线网络) 普遍应用于很多公共场合,商铺,家庭,企业的无线网络技术.比如WIFI相信大家都很熟悉就不介绍了

  • IEEE 802.16(WiMAX) 用于移动通信长距离无线连接技术,它是一项无线城域网(WMAN)技术,是针对微波和毫米波频段提出的一种新的空中接口标准。

  • 点到点协议(PPP) 用Modem通过电话线进行连接的技术,比如我们经常能在网络上看到的拨号连接。点到点协议PPP是一个被广泛使用的广域网协议,跨过同步和异步电路实现路由器到路由器(router-to-router)和主机到网络(host-to-network)的点到点连接。PPP协议提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。它包含三个协议,有兴趣的朋友可以自己去看看。

综合网络体系与网络接口层

讲到这里,大家应该是对网络体系有一定的概念了,那么我们就把之前讲的网络接口层的知识融入进去,你应该可以更好的理解网络体系下的网络接口层,下面我们在开始讨论物理地址(MAC地址),物理地址其实就是用来标记网络中的设备的标识符,我感觉着可以这么给你举一个不太恰当的例子,假如你现在是一个数据包在一个叫“中国”的局域网,你想从一个叫“郑州”的计算机用一种叫做飞机的通讯运输方式去往一台名字叫“北京“的计算机当然 你还获得了一个记载了这两台计算机名字(特征)的机票。那么郑州与北京其实就分别是发送方的物理地址和接收方的物理地址。而你作为一个数据包想要传输过去就需要机票,机票其实就指的是这双方的物理地址。理解了这个以后,我们来总结一下物理地址的特点Tips 物理地址就是MAC地址
1.通信双方的
物理地址应在同一局域网中。
2,物理地址是用来标记网络中的设备的。
3.传输的数据包都会包含发送方和接收方的物理地址
4.物理地址(MAC地址)具有唯一性,只有这样才能把数据包发送出去,也因此MAC地址都是有生产厂家生产时固化的网络硬件是硬件预留的地址。
下面咱们来讲一下MAC地址的格式,因为MAC地址都是要按照一定规则制造的,所以MAC地址也拥有自己的格式,它采用
十六进制数表示,六个字节(48位(长度自然是48bit)
整个地址可以看做两段,第一段是前24位。第二段是后24位。 分成了两段意义自然是不同的。

  • 前24位成为组织唯一标识符(OUI ,Organizationally Unique Identifier) 是由IEEE注册管理机构分配给不同厂家的代码,是区分厂家用的
  • 后24位就交给厂家自己分配了,称为扩展标识符 。因为MAC地址不重复所以后24位在同一个厂家一定是不一样的。(前24位为了区别厂家用自然也是不同的所以不存在两个一样的MAC地址
    进一步的学习,我们便说一说以太网,为什么要扯它呢?因为以太网实现由局域网中最常用的通信协议标准。那么我们不由的对网络设备之间的连接与数据传输方法产生了疑问,因为我们现在只知道接收发送双方的信息其它具体的过程并不清楚。下面我们继续学习把这个知识学透打败HR,介绍一下以太网连接。首先我们需要了解一下拓扑结构传输介质这些与硬件相关的概念和以太网的工作机制,它为什么可以有这样的功能?
    1. 拓扑结构
    在计算机网络的拓扑结构中我们延续了拓扑学中研究与大小,形状无关的点线关系的方法,我们将网络中的计算机跟通信设备看成点,把 传输的介质(像是什么双绞线,光纤,电话线)抽象为一条线。那么我们就会得到一个点和线组成的图形,我们就称之为拓扑结构。以太网的结构中主要可以分成总线型星型两类。
    在这里插入图片描述
    总线型:所有计算机通过一条同轴电缆进行连接。
    在这里插入图片描述
    2.星型: 所有计算机都连接到一个中央网络设备上。
2.传输介质

无论是什么样的拓扑结构,计算机与通信设备之间都需要传输介质。所以传输介质值得一提。以太网采用了多种连接介质,比如:双绞线(网线),光纤,还有咱刚才在总线型里提过的同轴电缆。这几个里面啊,双绞线 只要是用于主机到集线器或者交换机的连接,光纤用于交换机到路由器点对点的点链路或者交换机之间的级联。至于同轴缆就有一段历史了,基本要退出历史舞台。不多介绍了。

3.工作机制

有了拓扑结构(连线方法),和传输介质(线)。那么现在数据就可以借助传输介质传输了。作为一种广播网络,以太网采用附加冲突检测载波侦听多路访问机制CSMA/CD)。既然是广播网站所以网中的所有节点自然都可以看到网络中发送的所有消息。通过CSMA/CD,所有计算机都可以见识传输介质的状态。并且在传输之前等待线路空闲、如果有两个计算机同时都要发送数据,那就会产生冲突,结果是计算机会等待一个时间间隔然后再重新尝试发送
下面我们来解释一下以太网中的以太主机传输数据时的工作流程
1.监听通道上是否有信号在传输,如果有的话,那么信道处于忙状态,那就只能继续帧听,直到进行中的运输结束信道空闲为止。
2.如果没有监听到信号,那自然开始传输数据。
3.传输数据的时候还要继续监听。如果有了冲突,那就要执行以太网的退避算法,等一个时间间隔,然后重新从第一步开始。也就是说,有冲突产生的话涉及冲突的计算机就要返回到最初的监听信道的状态。没有冲突产生,那自然是发送成功了。

那么关于这一块的知识呢,我觉得还有一点得讲那就是以太帧。

以太帧就是在以太网链路中传送的数据包网络访问层的软件必须要把数据转换成能够通过网络适配器硬件进行传输的格式。那么这个转换的工作机制与具体结构是什么呢?我们再来学透彻,弄清楚这最后一点就透彻很多了。
1.工作机制

1.以太网软件从网络层接收到数据报
2.按照以太网帧数据段的要求把网际层数据分成较小的块。以太网帧整体大小必须在64~1518字节之间(前导码不算)。
3.把数据帧传递给物理层的底层组件,然后这些组件把转换为能通过传输介质的比特流
4.以太网上的其他设备接受到了这个帧,然后检查其中的目的地址(接收方的物理地址),如果目的地址跟网络适配器地址匹配,那适配器就会接收到其中的帧,并且把数据传递给协议栈中更高的层。
以太帧结构
在这里插入图片描述
以太帧结构的开头由同步码帧开始定界符两部分组成,紧随其后的是以太网报头,用MAC地址代表目的地址和原地址(飞机票记得吗?就是那个比喻。)帧的中间是帧负载的包含其他协议报头的数据包,比如IP协议。以太帧的结尾是一个32位荣誉校验码作用是检验数据传输是否出现了损坏,图片结构如上…上面的好像不是很清楚我再补一张在下面。在这里插入图片描述

  • 前同步码:使接收端的适配器接收MAC帧时能够迅速调整时钟频率,使二者(与发送端)频率相同。有7个字节,1和0交替排列
  • 帧开始定界符:正如其名,帧的起始符一个字节长度。前六位是1和0交替,最后两个为连续的1用来告知接收端的适配器要开始接收帧信息了。
  • 目的地址: 接收端的(物理地址或者叫MAC地址),六个字节。作用是检测这个帧的目的地址是否与适配器物理地址相同。如果一致那就说明是送到了自然开始下一步处理,如果不是,那就直接丢弃。
  • 原地址: 发送端的网络适配器的MAC地址,6个字节
  • 类型:上层协议的类型,因为协议是很多的,所以处理数据的时候要标识交给哪个协议处理。
  • 数据:有标识交付给上层的数据,以太网帧数据最小长度46字节最大1500字节,不满46字节自动补充到最小长度。
  • 帧检验序列FSC:检测该帧是否出错,4个字节长度。发送方计算帧的循环冗余码校验的值然后写到帧里,接收方接受的时候也算一次再跟发送端写到帧里的正确值比较,如果不一样肯定出现了问题,就要重新传输这一个帧。其实很好理解,就相当于对方给你寄邮件包裹里放了500块然后弄了张纸片写上500元,到你手里你一看纸片上写的500包裹里就400那肯定是出了问题了,就是这么个原理。

在这里插入图片描述

第一块内容更新完了,我不能说有多么多么的好,只能说我会尽力给大家做优质的东西吧,今天一天到晚上三点才弄出来这第一部分,实不相瞒现在看东西都模糊…希望大家喜欢的话点个赞加个收藏给个关注。给萌新一点鼓励吧,谢谢您。我还会坚持做更好的内容。 。。。ヾ(o・ω・)ノ

发布了7 篇原创文章 · 获赞 35 · 访问量 2998

猜你喜欢

转载自blog.csdn.net/weixin_45950372/article/details/104702847