手记

【学习打卡】第1天 网络编程基础知识

一、课程信息

打卡时间:2022.8.3
课程名称:C/C++气象数据中心实战,手把手教你做工业级项目
章节名称:开发基于tcp协议的文件传输子系统
讲师: 长歌_吴从周

二、今日课程

课程内容:(1)掌握计算机网络基础知识 (2)掌握socket的常用函数,能编写最简单的网络通信程序

三、学习心得

老师将这一章节的内容分割为四个模块:基础知识学习、封装socket的API、多进程的网络服务端、基于TCP协议的文件传输系统。作为一名非科班选手,没有系统学习过计网知识。因此,第一次打卡的内容主要是为了后续课程的学习,对一些基础知识进行的收集。

3.1 MAC地址、IP地址、端口

MAC地址:
直译为媒体存取控制地址,也成为局域网地址、以太网地址、物理地址或硬件地址。
每个网卡都拥有一个第一无二的48为串行号(MAC地址),MAC地址是网卡的唯一标识,相当于“门牌号”,在OSI模型中,第二层负责MAC地址。

IP地址:
IP协议将不同的“帧”同意转换成“IP数据报”格式,实现了因特网上所有计算机的互联互通。IP地址是IP协议提供的一种统一的地址格式,它为互联网上每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

为了便于寻址以及层次化构造网络,每个IP地址包括两个表示码(ID),即网络ID和主机ID。同一物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上的工作站,服务器和路由器等)有一个主机ID与其对应。例如IP地址:192.17.125.2,其中192.17.125是网络ID,2是主机ID。
A类IP:由1个字节的网络地址和3个字节的主机地址组成,网络地址最高位为“0”,网络地址字段需要掐头去尾,全0和全1有特殊用途,实际可指派的第一个字段范围是1~126。
B类IP:由2个字节的网络地址和2个字节的主机地址组成,网络地址最高位为10。
C类IP:由3个字节的网络地址和1个字节的主机地址组成,网络地址最高位为110,一般用于小规模局域网。
D类IP:多播地址,也称组播地址,最高位是1110。
特殊的网址:每一个字节都为0的地址(0.0.0.0)对应于当前主机;IP地址中每一个字节都为1的地址是当前子网的广播地址;凡是以“11110”开头的E类IP地址都保留用于将来和实验使用;IP地址不能以127开头,该类地址中的127.0.0.1到127.255.255.255用于回路测试,如127.0.0.1可以代表本机IP地址。

端口:
特指TCP/IP协议中的端口,是逻辑意义上的端口。一个IP地址的端口范围从0~25535,用来标记进程
周知端口号:0到1023,用于特定服务。注册端口号:1024到49151。动态端口:49152到65535,一般不固定分配。

3.2 网络模型

OSI七层参考模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,各层的功能及特征要有所了解。

3.3 Linux网络编程

socket:
socket(套接字),是对网络中不同主机上的应用进程进行双向通信的端点的抽象。socket是应用进程与网络协议栈之间的桥梁,其本质上是文件,可以利用文件描述符引用套接字。

//套接字通信分为两部分:
服务器端:被动接受连接,一般不主动发起连接
客户端:主动向服务器发起连接

字节序:
字节序可以分为大端字节序和小段字节序,不同的设备可能其默认的字节序不一致,因此可以用字节序转换函数进行变换

socket地址:
socket地址其实就是一个结构体,封装了端口号和IP等信息。socket地址包括通用socket地址和专用socket地址,所有专用socket地址类型的变量便于理解和使用,但是在实际使用时都需要转化为通用socket地址类型socketaddr(强制转化),所有的socket编程接口使用的的都是通用socket地址。通用socket地址的端口号、IP信息都存储在一个数组中,但是专用的socket地址分开存储清晰易懂,不过可以直接强制转换。

TCP通信流程:
TCP服务器端:
socket()->bind()->listen()->accept()->阻塞直到有客户端连接->recv()->send()->recv()->close()
TCP客户端:
socket()->connect()->send()->recv()->close()

课程学习截图

2人推荐
随时随地看视频
慕课网APP