一文打败TCP/IP五层协议基础知识
作者:互联网
注意:
文章如有抄袭部分,请私信我。
未经允许,不得转载,如需转载,可以私信我。
前言
在很久之前,计算机刚刚被研究出来,当时的计算机还不能上网,玩游戏等,它只用于科学家,并没有给普通人使用。
后来,科学家们想要让两台计算机之间互相通讯,但是如果想要两台计算机互相通讯,则需要满足一样的协议,只有计算机遵守了这种协议,才能够实现通讯。
然而,让计算机通讯可不是一件简单的事,需要很多的协议,才能实现通讯,例如:
-
一台计算机发出的消息如何才能发到指定的计算机,目标计算机怎么才能知道这个消息是发送给自己的?如果不解决这个问题,那么可能你想发给朋友的消息发到了公司的计算机里面。
-
计算机如何识别这个信息是发送给电脑上的那个软件的?如果不解决这个问题,那么可能你微信发出去的消息发到了对方的QQ里面,这显然不是人们想要的结果。
-
发送的信息如果在传输过程中丢失了怎么办?发送的信息有没有办法重新发送?
…………
科学家们为了解决这些问题,开始了他们的努力。
基本知识:局域网的组成和IP地址
(本人画画不太美观,凑合着看吧)
以上就是局域网的基本组成,圈圈代表计算机,两台计算机,用网线连接到了交换机。
科学家为了让计算机可以通讯,于是发明了IP地址。
IP地址
什么是IP地址呢?你可以理解为他是每台计算机在局域网内的住址。每台计算机在局域网内都有一个独一无二的IP地址,目前最新一代的IP地址是ipv6,也就是第六代IP地址,据说他的数量非常多,可以给地球每一粒沙子分配一个IP地址。但是目前我们仍然在使用ipv4网络。
现在我们给计算机分配一个IP地址:
OK,现在我们的计算机有了一个IP地址,IP地址的组成是:X.X.X.X,X的取值范围是0-254.
这里还要和大家讲一下子网掩码和网段。子网掩码决定了网段。子网掩码有这么几个格式:
- 255.0.0.0
- 255.255.0.0
- 255.255.255.0
例如255.255.255.0,那么该局域网内的所有IP地址都必须是10.1.1.X,当然,前三位是可以任意改变的。但是一旦确认了,就不会变了。例如确定为10.2.2.X,就不能改变了。
网关的IP地址一般是10.1.1.1或10.1.1.254。
此外还需注意,我们每台计算机还有一个公网的IP地址,通过这个IP地址,我们可以获取你的地理位置,一般性误差在5公里左右。
MAC地址
MAC地址指的是每一台计算机的唯一地址,可以用来分辨发给那一台计算机,一般性交换机都会有一个MAC地址缓存表,可以绑定MAC地址和IP地址,当交换机接收到消息之后,就可以根据MAC地址给到IP地址,从而发送到计算机上。他也有一种格式,是XX-XX-XX-XX-XX-XX。例如:0E-4R-8F-ER-3C-4F.
这些都属于局域网的基本学习要点,本章主要不是讲解局域网,而是讲解TCP/IP协议簇,所以对这些知识只是基本讲解,如果大家想要继续学习的话,可以在网上找寻一些资料来看看,都不错。
补充:运行一个软件后,他会做什么?
这里是为后文做一些基本的讲解,所以建议大家读一下,如果你会了,你可以直接跳过。
当你在计算机上运行了一个软件之后,例如聊天软件,他会在你的电脑上运行一个进程,例如Edge浏览器,他会在你的电脑上运行msedge.exe的进程。当一个聊天软件开启之后,他还会在你的电脑上开启一个端口,用来接收数据。这个端口是由软件开发者决定的。而且软件开发者可以选择TCP和UDP两种协议,这两种协议在之后也会和大家讲。
OSI七层模型
1974年,ISO国际标准化组织发布了OSI参考模型:
OSI(开放式系统互联,Open System Interconnection)模型分为应用层,表示层,会话层,传输层,网络层,数据链路层和物理层。其中每一层都有非常重要的作用。
网络通讯极其复杂,设计到的协议也很多,所以科学家在发明网络通讯协议时,使用了分层的思想,将复杂问题简单化,提高效率。
可惜的是,OSI模型并没有被人们使用,因为后来有科学家又提出想法,把表示层和会话层的功能合并到应用层里面。其中有两个协议非常重要,一个叫IP协议,一个叫TCP协议,于是取名叫TCP/IP五层协议。
TCP/IP五层模型
TCP/IP五层协议,包括了应用层,传输层,网络层,数据链路层和物理层。
请记住以下的重要知识点,我会和大家解释一下:
- 设备完成那一层的工作,他就工作在那一层。
- 设备的功能向下兼容,例如引用层的设备,他也会懂得下面四层的知识。
- 两台计算机的相同层之间的协议都是相同的。
电脑是工作在引用层的,也就是说电脑自己就明白了传输层,网络层,数据链路层和物理层的知识。
什么叫“两台计算机的相同层之间的协议都是相同的”呢?也就是说两台电脑的相同层使用一样的协议。例如TCP协议,他就是在传输层,那么所有使用TCP/IP五层协议模型的计算机,他们的传输层都知道TCP协议。
一些科学家又说,要把数据链路层和物理层归并为网络接口层,但是现在全世界仍然在使用TCP/IP五层架构。
数据的封装和解封装的大致流程
那么,现在问题来了,他们每一层的功能是什么呢?当你在QQ软件里面写好内容一回车,你的电脑做了什么呢?当对方QQ回你消息之后,你的电脑又做了什么呢?
注意,这里是数据封装和解封装的基本流程,事实上复杂得多,这里知识写一个大致流程。
应用层
首先,假设现在我们开发了一款聊天软件TT聊天,他的开放端口号是TCP/1888(TCP协议会讲),然后,我的电脑使用TT软件给小爱发了一条Hello。首先,TT软件他又一个进程名,例如tt.exe,那么,Hello的信息就会给到传输层。
传输层
这里要给大家讲一下TCP协议和UDP协议,以便大家更好的理解。
UDP协议
UDP协议(User Datagram Protocal),是传输层的一个重要协议,该协议的特点是快速,高效,使用UDP的服务有:DNS,TFTP,SMB等。该协议定义了端口,并要求数据帧在传输过程中必须加上端口号,在到达对方计算机之后,就可以根据端口号找到进程。因为其简单,容易实现的特点,所以在互联网初期,数据在传输层的封装都是用UDP协议。但是UDP协议没有确认机制,也就是说如果数据包发出之后,无法知道对方计算机有没有接收到,所以可靠性较差。因此,人们又开发出了TCP协议。
TCP协议
TCP协议(Transmission Control Protocol),是目前主流的数据段封装协议。TCP在UDP的基础上,增加了重发机制和三次对话机制,一旦对方计算机没有接收到数据,就会重新发送,这样提高了数据传输的可靠性。但是与其同时,这样会加满数据的传输速度,影响性能。目前很多服务都在使用TCP作为他们的数据段封装协议。例如HTTP,HTTPS,FTP.POP3等。TCP协议是目前主流的传输层封装协议。
理解完了UDP和TCP协议之后,我们再来看,由于我们的TT软件是TCP/1888,所以我们在这一层会被加上一段东西。这段东西里面包括:我们使用的协议(TCP),我们使用的端口(1888)。只有这样,当数据发送到对方计算机后,对方计算机的传输层才能把数据发到对方计算机的TT软件里面。这段包含端口和协议的数据叫做TCP/UDP头,由数据和TCP/UDP头组成的数据叫数据段。
这样,数据段被传输层扔到了下一层:网络层。
网络层
在传输层,数据已经有了目标:就是对方计算机的TT软件,可是,他还不知道对方计算机是哪台计算机。于是,我们必须告诉这个数据对方计算机的IP地址。这个重大的任务就交给了网络层,网络层要给数据段加上一段东西,让他明白他要前往哪一台计算机。
在这一层里面,有一个非常重要的协议叫做IP协议,当传输层知道了IP相关内容后,才能够有能力告诉数据段他的目标IP。加上去的这段IP,叫做IP包头。IP包头里面含有自己的IP地址和对方的IP地址,这样,数据段就知道了目标IP是什么。加上了IP包头的数据段,叫做IP包,也叫做报文。
就这样,数据完成了网络层的游行,网络层会把他扔给数据链路层,当然,在这里,我要再给大家讲一下网络层的另外几个重要协议:ICMP和ARP协议,这里暂时不讲解,之后我会出一篇计算机网络协议的内容,把ICMP,ARP,IP等重要协议以及TCP/IP各层的详细内容讲解一下。
数据链路层
数据链路层的主要任务是将IP包里面添加目标MAC地址,让这个数据能够知道目标的MAC地址,在这一层中的主要协议就是MAC子层协议。当数据包有了目标MAC地址之后,其实就已经可以发送出去了。数据链路层加上的数据表MAC子层,其中包括自己的MAC地址和目标的MAC地址,这时候,这个包的名字叫做数据帧。与此同时,数据链路层还会加上一个叫做FCS的数据,一边核对前面数据的完整性。
物理层
物理层接收到数据帧之后,就会通过网线把这个数据帧发到对方计算机的物理层上,对方计算机接收到了这个数据帧之后,就会一步步解包。从而把Hello发送到tt.exe进程中,这样,小爱就能接收到我的数据了。
结束
本文讲解了OSI七层模型,TCP/IP五层模型和每一层的基本功能,之后还会出一篇计算机通讯协议的讲解,敬请期待。同时推荐大家阅读《计算机网络》补一点基础知识。
标签:协议,计算机,数据,IP,TCP,IP地址,五层 来源: https://blog.csdn.net/to_run_with_wind/article/details/113483868