🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!
人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习!欢迎志同道合的朋友一起加油喔🦾🦾🦾
目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个🐒嘿嘿
谢谢你这么帅气美丽还给我点赞!比个心
目录
一. IP地址和端口号
1. IP地址
2. 端口号
二.协议
1. 为什么要引入协议
2. 协议的基本概念
3. 一些协议的默认端口
三.协议分层
OSI七层模型
TCP/IP五层模型(重点)
封装和分用
一. IP地址和端口号
1. IP地址
- IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址,就好比我们每个人的身份证号一样,一个身份证号有且只能对应一个人
- IP地址由一个32位的二进制数表示,它被分割为4个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:
100.4.5.6 - 一般情况下,我们都希望网路上每个主机的IP地址都不一样,但实际上由于IP地址不太够用(最多只能取42亿9千万),所以还是有多个主机共用一个IP地址的情况
注意:
127.?的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信
IP地址解决了网络通信时定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识
2. 端口号
- 用于区分一台主机上的应用程序,相当于应用程序的一个标识,端口号是一个整数(2个字节,取值范围为0-65535)。
- 例如:MySQL的默认端口号为3306
- 当一台主机收到一个具体的数据的时候,要把这个数据交给哪个程序来处理往往是通过端口号来进行区分的;每个访问网络的程序,都需要有一个不同的端口号,即一台主机上,不能用两个进程尝试关联(绑定)同一个端口号
二.协议
1. 为什么要引入协议
有了IP地址和端口号,这样可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,那么我们如何告诉对方发送的数据是什么样的呢?
网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?
为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式
2. 协议的基本概念
协议就例如:接头行动,两个人必须规定一个暗号,才能对上,这就是一种协议
计算机中的协议就是规定网络通信中的设备如何连接,如何互相识别的一套规则。
协议有三要素:
- 语法:规定数据与控制信息格式。例如两个人打电话规定用中国话
- 语义:规定当一端发出了控制信息,另一端该如何响应,做出什么动作。比如跑步,发令枪一响运动员就跑起来了
- 时序:即事件实现顺序的详细说明。规定了何时通信,先干什么,后干什么。
协议(protocol)最终体现为在网络上传输的数据包的格式
3. 一些协议的默认端口
系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:
- 22端口:预留给SSH服务器绑定SSH协议
- 21端口:预留给FTP服务器绑定FTP协议
- 23端口:预留给Telnet服务器绑定Telnet协议
- 80端口:预留给HTTP服务器绑定HTTP协议
- 443端口:预留给HTTPS服务器绑定HTTPS协议
以上只是说明 0 ~ 1023 范围的知名端口号用于绑定知名协议,但某个服务器也可以使用其他 1024 ~65535 范围内的端口来绑定知名协议
一个协议如果要解决网络通信的全部问题,那么一个协议是十分复杂的,于是有了协议分层
三.协议分层
协议分层就如同我们写代码时,一个类太复杂了,我们就把他拆分成多个类,一个类实现一个功能。
类似,有些协议解决的问题都差不多,于是依据他解决问题的类型,把他们分成了多层协议。
常见协议分分层模型:
OSI七层模型
由于OSI七层模型过于复杂,且不实用,所以并没有实现
TCP/IP五层模型(重点)
TCP/IP模型根据OSI七层模型进行了精简,如图
理解每层协议的功能:
- 应用层:负责数据传输到之后,该怎么使用
- 传输层:负责两点之间数据传输,只管发出者和接收者,不管传输路径。可类比卖家发货只管发货地和收货地
- 网络层:负责两个点之间的路径规划。可类比卖家把东西给物流公司后,物流公司负责规划路径,例如北京到深圳,可以是这个路径:北京——杭州——苏州——深圳,也可以是这个路径:北京——广东——上海——深圳。
- 数据链路层:负责两个节点之间如何传输。可类比物流公司规划完路径之后,两个节点之间如何运输,北京到广东该用货车运还是飞机运。
- 物理层:网络通信基础设施。就是我们平常可见的信号塔,也可类比送快递的公路,没有公路快递也没法送
协议在此拆分过后,有许多好处:
- 下层协议使用上层协议不需要知道他实现细节,只管用
- 每一层协议可以替换成其他协议,其他层次的协议是不会感受到的,这也是协议更加灵活了
网络设备所在分层:
- 路由器:网络层
- 交换机:数据链路层
- 集线器:物理层
封装和分用
封装就是在每层进行处理成一个数据报,然后递给下一层,在处理完后,交给物理层传输出去。
过程:在应用层会产生一个数据包,然后将数据包递给传输层,传输层拿到数据包和自己的数据整合好产生一个数据报再给网络层,以此类推,直到数据链路层整合好所有数据后,会构成一个以太网数据帧,将这个数据给物理层,物理层会将二进制信息转化为光信号/电信号传递出去。
同理,分用就是封装的逆过程,将数据层层拆分,最后拿到应用程序数据