写点什么

Linux 网络编程 _ 网卡操作指令与 TCP 协议介绍

作者:DS小龙哥
  • 2022 年 6 月 25 日
  • 本文字数:2063 字

    阅读完需:约 7 分钟

这篇文章介绍网络通信大致流程,数据如何从网卡传输出去,其他设备如何解析数据解码接收的流程,介绍了常用的网卡操作指令,梳理了 TCP 协议服务器客户端的创建流程,实现基本数据通信。


Linux 系统编程需要掌握的知识:


【1】操作系统环境搭建(虚拟机+Linux 操作系统)


【2】常用的指令(文件目录管理、网络管理、磁盘管理)


【3】文件(fopen 系列、open 系列)和目录操作


【4】Shell 脚本编程


【5】进程和线程编程(并发): 多路 IO 操作: poll 机制、select 机制、epoll 机制


【6】网络编程


【7】常见的设备操作: 摄像头控制


学习 Linux 系统编程: Linux 应用和驱动开发、Linux 运维开发。

任务 1: 网络编程介绍

1.1 协议概念介绍

网络传输分协议,底层常见协议: TCP、UDP 协议。


网络数据如何传输?



协议词汇


IIC、SPI、CAN、485、8080、USART(串口)、TCP/IP 协议…….


TCP/IP 协议: 传输数据是分包进行发送。(数据包: 封包、解包)


问题: 有一个路由器可以上网(外网只有一根网线),路由器可以扩展网络(4 根网线),4 根网络同时接了 4 台电脑。


每台电脑在进行网络应用操作(QQ 聊天、浏览器文件下载、玩游戏……)


端口号: 表示每一台电脑上的具体的一个应用程序。


IP 地址: 表示每一个电脑的地址(唯一地址)。


访问一台电脑具体应用的地址表示方法: <IP 地址>:<端口号> 192.168.1.123:8080

1.2 IP 地址介绍

局域网 IP 地址: 常见都是 192 开头: 192.xx.xx.xx


广域网 IP 地址(公网 IP): xx.xx.xx.xx 比如: 登录 QQ。

1.3 TCP 协议和 UDP 协议区别:

TCP 协议: 点对点协议。 比如: 打电话 (3 次握手过程)。


(HTTP 协议、FTP 协议……)


UDP 协议: 广播协议。 比如: 广播电台。实时效率比较高。(数据不可靠)


TCP 协议模型: (C/S 模型) (客户端+服务器模型)


TCP 协议通信:是针对服务器和客户端之间。


注意: 客户端和客户端不能直接通信、服务器和服务器直接不能直接通信。


电脑上的 QQ 软件: QQ 客户端,服务器就在腾讯公司。


1.4 学习 Linux 系统基本网络操作指令

指令 1: ifconfig <参数>


用法: ifconfig 查看已经启动的网卡信息(IP 地址)。



【1】手动设置网卡 IP 地址: #ifconfig eth0 192.168.1.100


【2】开启网卡: # ifup eth0


【3】关闭网卡: # ifdown eth0


【4】查看全部网卡: # ifconfig -a (包括关闭未启动的网卡)


【5】关闭防火墙的图形设置页面: # setup


1.5 网卡自动分配 IP 地址的操作






 测试网络是否畅通:



1.6 常用的 TCP 协议调试软件使用

任务 2: TCP 协议通信

在 Linux 系统下所有的设备操作都可以看成文件操作。


网络上传输的数据与本地计算机的数据传输存储的方式不一样: 小端和大端


TCP 协议服务器搭建过程


【1】创建套接字: socket


【2】绑定端口号: bind (创建服务器)


【3】设置监听的数量,最大可以连接的客户端数量。


【4】阻塞方式等待客户端连接


【5】实现数据通信。 (客户端连接成功之后)


TCP 协议客户端搭建过程


【1】创建套接字


【2】连接指定的服务器


【3】实现数据通信(成功的连接服务器)


将 16 位数量从主机字节顺序转换为网络字节顺序。


# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8))


练习


【1】重新编写代码,实现客户端与服务器之间基本通信。


【2】实现文件传输:


比如: 服务器给客户端发送文件 (下载)


客户端给服务器发送文件 (上传)


(1) 在本地计算机上测试


(2) 与局域网内其他计算机之间进行测试。 考虑网络、丢包问题。


扩展练习:


【1】实现目录传输(只写一级目录)。


【2】实现目录内文件的同步 (公交车站台、地铁里广告机(视频播放机))


安装编译器



解压命令: # tar xvf sublime_text_3_build_3143_x32.tar.bz2


在任意目录下想要运行这个编辑软件,需要添加环境变量。


1.# vim /etc/profile 打开配置文件 (翻到最后一行)进入插入模式下,写上以下代码,再保存退出:export PATH=/work/test/sublime_text_3:$PATH
2.立即生效环境变量的命令(只是当前运行的终端有效)# source /etc/profile
3.永久生效。重启系统 或者 注销用户重新登录
复制代码


第二个软件安装: # rpm -ivh UltraEdit-16.1-0.22.i386.rpm



使用软件: # uex 123.c


注册方法:


方法1(不改变软件配置):UltraEdit for linux 30天无限试用的方法:
1. 查找uex.conf文件,该文件是UltraEdit的配置文件示例:[root@wbyq sd_fuse]# find / -name uex.conf查找出的结果:/root/.idm/uex/uex.conf
2. 删除uex.conf文件示例:[root@wbyq sd_fuse]# rm /root/.idm/uex/uex.conf
3. 删除记录时间的文件[root@wbyq ~]# rm /tmp/*.spl -rfdv
4. 重新运行uex命令即可使用方法2(改变软件配置,全部重新初始化):UltraEdit for linux 30天无限试用的方法:
1. 查找uex.conf文件,该文件是UltraEdit的配置文件示例:[root@wbyq sd_fuse]# find / -name uex.conf查找出的结果:/root/.idm/uex/uex.conf
2. 删除/root/.idm目录示例:[root@wbyq sd_fuse]# rm /root/.idm -rf


3. 删除记录时间的文件[root@wbyq ~]# rm /tmp -rf


4. 重新运行uex命令即可使用30天
方法3:UltraEdit for linux 30天无限试用的方法:(快速精简,不改变之前的软件配置)rm -rfd ~/.idm/uexrm -rf ~/.idm/*.splrm -rf /tmp/*.spl
软件下载地址:http://www.ultraedit.com/downloads/uex.html
复制代码


发布于: 刚刚阅读数: 4
用户头像

DS小龙哥

关注

之所以觉得累,是因为说的比做的多。 2022.01.06 加入

熟悉C/C++、51单片机、STM32、Linux应用开发、Linux驱动开发、音视频开发、QT开发. 目前已经完成的项目涉及音视频、物联网、智能家居、工业控制领域

评论

发布
暂无评论
Linux网络编程_网卡操作指令与TCP协议介绍_6月月更_DS小龙哥_InfoQ写作社区