网络编程基础(一)
OSI参考模型: 网络本质:不同计算机之间进程通信。 网络数据在收发时,要进行封包与解包操作,按照层次结构以及相应的结构来进行,这个过程操作系统已经帮我们做了。层层向下打包协议,数据包最终通过网卡传到路由器或交换机。 所以我们只需在应用层建立网络套接字socket(本义:插座),相当于一个接口,建立之后,就可以使用内核里相关函数来完成通讯。 PC-A主机进行数据打包,填写地址信息,发给交换机。交换机查表(将主机MAC地址对应映射连接的端口),找到对应的目标主机PC-B连接的端口,根据目标主机端口转发数据包。 这里需要注意,如果一个新的路由器,对应的表是空的,这里该怎么查找?其实路由器都有自我学习功能,当主机发送数据包时,交换机会记录下地址信息,填到表中。 如果这时要发到B主机,查表找不到目标主机,会进行广播群发,对应的机器才会回应,解析这个数据包,交换机再进行学习。 如果不知道对方的MAC地址,可通过ARP协议,根据对方IP地址来访问MAC地址。这时PC-A将数据封装成ARP数据包,发给交换机,在进行ARP广播,各主机根据IP来判断是否发给自己,当PC_B接受到,发送应答包给交换机。
路由器是一种用于网络互联的计算机设备,工作在网络层,主要是为经过路由的每个数据帧寻找一个最佳路径。
|