IP地址是互联网上用于标识设备的唯一地址。它分为IPv4和IPv6两种格式。IPv4地址通常由四个十进制数字组成,每个数字范围是0到255,例如:192.168.1.1。而IPv6地址则由八组十六进制数构成,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
端口号是一个与IP地址相结合的数字,用于标识网络中的特定服务或进程和区分主机上不同的程序。在TCP/IP协议中,端口号范围是0到65535,其中0到1023是保留端口,用于一些知名的服务,例如HTTP服务使用的端口号是80。
协议可以认为是一种约定,通信双方,对于通信规则的约定!一定是通信双方都得认可的,协议是在网络中进行通信和数据交换的规则集合。常见的网络协议有TCP、UDP、HTTP、SMTP等。每种协议都有自己的特点和用途,例如TCP是一种可靠的面向连接的传输协议,而UDP是一种无连接的传输协议。
网络通信,是一个非常复杂的事情,这个过程中涉及到很多的细节问题如果你使用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂。此时,就可以把一个功能复杂的协议,拆分成多个功能更单一的协议了。确实是拆分了,但是,拆出来的协议太多了,于是,就要对这些协议,进行分类,甚至,要进行”分层“!
协议分层也就是把很多协议,按照功能分成不同的层级,每个层级都有对应的主线任务(目标/要解决的问题)上层协议会调用下层协议的功能,下层协议会给上层协议提供服务.
OSI七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。是只存在于教课书上的,实际上客观世界中不存在,在这就不过多讨论了
可以认为是 OSI 的简化版本,就是真实世界采取的网络分层模型,咱们目前接触到的网络,大部分都是 TCP/IP 模型的(电脑上网)
当然,也有不是的,4G/5G 通信, 就是一套专门的模型协议(手机流量上网)
关于五层协议,具体是哪五层
1.物理层:硬件层面上的相关约定 例如网线,网口......
2.数据链路层:关注的是,通信过程中,两个相邻节点之间的通信
3.网络层:关注的是通信中,通信路径的规划,规划出的路径,就决定了数据要经过哪些节点“点到点的传输”
4.传输层:关注的是通信双发“起点”和终点是“端到端的传输”
5.应用层:和具体的应用层序直接相关。传输的数据是干啥的如何使用等
上层协·议调用下层协议,下层协议给上层提供服务,这里涉及到了封装(这里的封装和java中面向对象的封装,不是一个封装)
举例
1.A 通过 QQ 发送 hello 给 B,A 在聊天窗口里,输入 hello, 点击发送,QQ 应用程序就要负责实现上述逻辑~~
很明显,上述信息都需要通过网络来传输~~
QQ 应用程序,首先就会把上述要传递的内容,组织成"应用层数据包
2.应用层数据包,已经有了,QQ 程序, 就要调用系统的 api, 来进行传输,
应用层接下来要把数据交给传输层怎么交给传输层?传输层(操作系统内核) 提供了 api(称为socket api), 让应用程序去调用。调用这样的 api, 就会把刚才的应用层数据交给传输层.(进入到系统内核了),传输层拿到应用层数据包之后,就会把这个数据包进行进一步的封装,构造成 传输层数据包。在传输层典型协议有两个,TCP, UDP
此处假设使用UDP来作为传输层协议
传输层 构造好数据包之后,就会继续吧数据包, 交给网络层,(传输层会调用网络层提供的 api,这个调用的过程都是系统内核,自行负责了,咱们程序员感知不到)
3.网络层典型的协议是IP协议
又进一步调用数据链路层的api,把上述的IP数据包交给数据链路层的协议,同样也是系统内核完成的,程序员感知不到的
4.数据链路层的典型协议,以太网协议
以太网,也有自己的数据包格式,就会拿到上述 IP 数据包,进一步的封装
上述数据已经进入到网卡驱动中了接下来就要真正发送出去了。
5.物理层 上述的以太网数据帧,本质上还是0101二进制数据,硬件设备,要把上述二进制数据转化成光信号/电信号/电磁波才会真正的进行发射
上述层层包装数据,不停的加数据报头的过程,称为“封装”
当数据到了B这边,又要做哪些事情哪?就是上述过程的逆过程
1.物理层
收到一系列光电信号,把这些信号转成 0101 二进制数据, 交给 数据链路层
2.数据链路层
按照以太网协议,对数据进行解析(解析报头中的关键信息,为后续的传输/转发打下基础,还需要拿到载荷数据)
3.网络层 IP协议
IP 协议拿到了 IP 数据包,按照协议格式进一步解析, 解析报头中的关键信息, 取出载荷,再把载荷再进一步交给上一层(传输层)
4.传输层 UDP
拿着 UDP 数据包,按照 UDP 格式进一步解析,解析出关键的信息 (要交给哪个端口号对应的进程),以及解析出载荷数据,再把载荷交给对应的应用程序
5.应用层
QQ 程序拿到了应用数据包,QQ 按照自己的协议格式进行解析,拿到这里的结构化数据,显示到界面上