这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记。
本科时学过计算机网络,但是只掌握了大概的知识,保证不挂科的程度,对计网的实用性并不了解。借着青训营的学习机会,再重新学习一下计网的相关知识。
应用层
应用层是整个层次最顶层,直接和最原始数据打交道,定义的是应用进程间通信和交互的规则。这是什么意思?因为两台电脑通讯就是发送方把数据传给接收方,虽然发送方知道自己发送的是什么东西、转化成字节数组之后有多长,但接收方肯定不知道,所以应用层的网络协议诞生了,他规定发送方和接收方必须使用一个固定长度的消息头,消息头必须使用某种固定的组成,而且消息头里必须记录消息体的长度等一系列信息,以方便接收方能够正确的解析发送方发送的数据。如果没有应用层的规则,那么接收方拿到数据后也是不知所措,就如同拿到一个没有说明书的工具无法操作。
运输层
负责向两个主机中进程之间的通信提供通用数据服务,“传输层”的功能,就是建立”端口到端口”的通信。例如,同一台主机上有许多程序都需要用到网络,假设你一边在看网页,一边上QQ聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示QQ聊天的内容?也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。“端口”是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。
网络层
网络层”的功能是建立”主机到主机”的通信。通过网络层我们能找到其他一台电脑的所在位置并进行主机到主机连接。每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。
数据链路层
两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻的链路上传送帧(frame)。由于网络层移交的ip数据包数据可能会很多,所以要进行分组封装成帧,每一帧包括数据和必要的控制信息。其实就是解读电信号,进行分组。封装成帧,透明传输,差错控制。
物理层
电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式,它就是把电脑连接起来的物理手段,它主要规定了网络的一些电气特性,将本电脑要传输的数据帧变成010101的比特流,发送出去,作用是负责传送0和1的电信号。