一、课程信息
打卡时间: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()
课程学习截图
共同学习,写下你的评论
评论加载中...
作者其他优质文章