1.IP地址
IP地址实际上全称是(互联网协议地址),是每一台计算机在网络上面的编号,每个连接Internet 的设备(如计算机、路由器、服务器等)都被分配一个唯一的 IP 地址,简单来说,IP地址用于定位主机的网络地址。
IP作用:
用于在 Internet 上的数据通信中确定发送和接收数据的设备。当你在浏览网页、发送电子邮件、下载文件或进行其他网络活动时,你的设备和其他设备之间的通信都需要使用 IP 地址来定位和识别彼此。就像发送快递一样,需要同时知道发件人的地址和收件人的地址。
IPV6和IPV4:
IPV6和IPV4是当前网络中最重要的两个IP地址版本,IPV4由32位二进制数表示,主要以点分十进制表示如10.184.185.12,IPv6 地址由 128 位二进制数表示。IPV6实际上是为了解决IPV4快要枯竭的问题。
2.端口号
端口号是计算机网络中某个程序的入口,比如通过我的IP地址找到我的计算机位置,但是要找到比如我的idea启动的Tomcat时候使用的是8080端口号。在TCP/IP协议中,端口号是一个16位的数字,范围从0到65535。简单说,端口号用于定位主机中的进程。
我们的IP用来定位主机,然而主机上面有很多进程都在使用网络,这时候就要用端口号定位进程
类似发送快递时,不光需要收获地址(IP地址),还需要指定收件人(端口号)。
对于一次网络通信的过程中,涉及到的 IP 和 端口,其实各有两个:
- 收件人地址 => 目的IP
- 收件人名字 => 目的端口
- 发件人地址 => 源IP
- 发件人名字 => 源端口
3.协议
网络传输过程常常需要双方之间遵守某种协议,用于在不同设备之间传输数据和进行通信的规则和约定,定义了传输格式,传输方式等方法。
4.五元组
在TCP/IP中可以用五元组来标识一个网络通信:
- 源IP:用来表示发送信息主机在网络中的位置。
- 源端口号:表示发送信息的主机里的应用程序在网络中的位置。
- 目的IP:用来表示接受信息主机在网络中的位置。
- 目的端口号:表示接受信息的主机里的应用程序在网络中的位置。
- 协议号:表示双方发送信息的格式。
打开cmd输入netstat -ano可以看到五元组的相关信息,最后一个PID就是进程号
5.协议分层
在网络通信中,由于协议中很复杂所以在网络通信中要约定好很多内容,所以导致协议很复杂。
我们通常把功能定位相似的协议放在同一层,只有隔壁层能够相互沟通,不能说第一层沟通第三层这种的,这样做是为了让一个复杂的协议变得相对简单。
-
上层协议只要了解下层协议,其他协议无需了解,(就比如我们打电话无需了解电话中的原理,只要了解接电话的对方讲的是汉语。)
-
某一层协议进行修改等,其他协议无需替换(我们打电话对方开始讲英语了,我们也要讲英语,但是还是无需了解电话机中通信原理)。
1.OSI模型
OSI模型是将网络通信划分为7个不同的层次,每个层次负责不同的功能,但是数据通过七个层级进行逐层传递。
OSI的七个模型
- 物理层:就好似我们平时的电线,网线等等物理层面的传输介质。
- 数据链路层:负责相邻节点之间的数据数据传输。
- 网络层:负责在不同的网络之间进行数据转发,实现数据传输。
- 传输层:负责两个起点和终点的之间数据传输,提供可靠的数据传输服务,如 TCP 和 UDP。
- 会话层:负责建立,管理和终止会话。
- 表示层:负责数据的格式转换和编码,确保不同系统间数据的兼容性。
- 应用层:提供用户与网络服务之间的接口,包括各种应用程序和协议,如 HTTP、FTP、SMTP 等。
OSI模型复杂又不实用,所以OSI模型没有落地,实际设计网络的时候是以TCP/IP模型来实现的。
2.TCP/IP五层模型
- 应用层:程序拿到数据之后要进行做什么,解决什么问题,就像比如商家接到订单,要交给快递公司。
- 传输层:关注网络数据包的起点和终点。
- 网络层:关注起点终点之间要走哪一条路,(快递公司进行路线规划,比如上海 => 南京 => 石家庄 => 北京)。
- 数据链路层:负责相邻两个节点的运输,(比如上海到南京,铁路运输;南京到石家庄,飞机空运;石家庄到北京,货车运输)
- 物理层:通信过程中的基础设施。(公路,铁路,航线等)
而如果算四层模型,则不算物理层,因为物理层是纯硬件,考虑的比较少。
3.网络设备所在分层
- 对于主机,操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP的下四层。
- 对于路由器,关注网络层以下的内容,也就是TCP/IP的下三层,也就是路线规划。(工作在网络层)
- 对于交换机,他只关注两点之间的传输方式。(工作在数据链路层)。
现在随着技.术的发展实际上路由器和交换机之间的功能也越来越模糊。
6.封装
封装实际上就是把一个协议格式转化成其他不同的协议的过程,在网络通信中数据传输需要经过不同的层次,各个层次对数据的要求也不一样,每一层在数据上添加一些特定的信息(协议头部),就可以到下一层进行处理了。
- 不同的协议层对数据包有不同的称谓,在传输层中较做段(segment),在网络层中叫做数据报(datagram),在链路层叫做帧(frame)。
如下为数据封装的过程: