course/networkProgram/NetworkProgram.log

36 lines
2.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

物理层:
它主要规定了网络的一些电气特性作用是负责传送0和1的电信号。
数据链路层:
单纯的0和1没有任何意义所以我们使用者会为其赋予一些特定的含义规定解读电信号的方式
一组电信号构成一个数据包,叫做"帧"Frame。每一帧分成两个部分标头Head和数据Data
其中"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;“数据"则是数据包的具体内容。
以太网规定,连入网络的所有设备都必须具有"网卡"接口。数据包必须是从一块网卡传送到另一块网卡。网卡的地址就是数据包的发送地址和接收地址这叫做MAC地址。
每块网卡出厂的时候都有一个全世界独一无二的MAC地址长度是48个二进制位通常用12个十六进制数表示。
前6个十六进制数是厂商编号后6个是该厂商的网卡流水号。有了MAC地址就可以定位网卡和数据包的路径了。
网络层:
必须找到一种方法区分哪些MAC地址属于同一个子网络哪些不是。如果是同一个子网络就采用广播方式发送否则就采用"路由"方式发送。这就导致了"网络层"的诞生。
它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。
规定网络地址的协议叫做IP协议。它所定义的地址就被称为IP地址。目前广泛采用的是IP协议第四版简称IPv4。
IPv4这个版本规定网络地址由32个二进制位组成我们通常习惯用分成四段的十进制数表示IP地址从0.0.0.0一直到255.255.255.255。
传输层:
我们如何区分某个数据包到底是归哪个程序的呢?
也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口”port它其实是每一个使用网卡的程序的编号。
每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
“端口"是0到65535之间的一个整数正好16个二进制位。0到1023的端口被系统占用用户只能选用大于1023的端口。有了IP和端口我们就能实现唯一确定互联网上一个程序进而实现网络间的程序通信。
TCP服务端程序的处理流程
1.监听端口
2.接收客户端请求建立链接
3.创建goroutine处理链接。
一个TCP客户端进行TCP通信的流程如下
1.建立与服务端的链接
2.进行数据收发
3.关闭链接
TCP粘包
引申知识点:
大端和小端{https://zhuanlan.zhihu.com/p/680366680}