工业互联网@程序员的术与道:术——编程基本功之网络编程


工业互联网@程序员的术与道:术——编程基本功之网络编程
文章图片
工业互联网@程序员的术与道:术——编程基本功之网络编程
文章图片
工业互联网@程序员的术与道:术——编程基本功之网络编程
文章图片
工业互联网@程序员的术与道:术——编程基本功之网络编程
一、常用网络服务

  • 服务软件——DHCP
  • 服务器——dhcpd
  • 邮件发送服务器——sendmail
  • 邮件列表服务器——mailman
  • 接收邮件的服务器——pop3web
  • 站点——apache/nginx
  • 防火墙服务——iptables
  • 【工业互联网@程序员的术与道:术——编程基本功之网络编程】工具配置 ——netfilter

二、 网路诊断逐步检查网络的各个层次:物理连接、链路层、网络层直到应用层 , 熟悉使用各种如下的工具 , 包括
  • ethereal/tcpdump
  • hping
  • nmap
  • netstat
  • netpipe
  • netperf
  • vnstat
  • ntop
三、网络开发功能工具客户端/服务器架构socket 编程数据包抓获和协议分析libpap 等函数库实现某个协议参考相关的 RFC 文档 , 并通过 socket 编程来实现
3.1 linux网络编程步骤
3.1.1 创建套接字
通过 ip地址 可以确定目标主机 , 通过端口号可以将数据准确地交给目标程序 , 而 ip地址:端口号 就是我们所说的 套接字 。
套接字的创建通过函数 socket, 该函数需要包含头文件 <sys/types.h> 和 <sys/socket.h>, 该函数的声明为:
3.1.2 TCP连接与通信
无论是tcp还是udp , 第一步都需要创建套接字 , 而之后的操作差异较大 , TCP在数据收发前 , 需要建立连接 , 而UDP不需要建立连接就可以收发数据 。
  • 建立TCP SERVER
a.通过 socket() 系统调用创建一个套接字;
b.使用 bind() 系统调用将所创建的套接字绑定到指定的端口上;
c.通过 listen() 将进行端口绑定的套接字进行端口侦听 , 使客户端能够连接;
d.通过 accept() 接受客户端的连接 , 该函数将会被阻塞 , 直至客户端连接上来;
e.数据收发 read / write;
会使用到的结构体:
**注:**如果在bind绑定时 , 指定端口0 , 意味着由系统随机选择一个可用端口来绑定 。
  • 建立TCP client
a.通过 socket() 系统调用创建一个套接字;
b.通过 connect() 系统调用将创建的套接字连接到TCP服务器上;
c.数据收发;数据收发的方式有很多 , 其中最简单的方式是使用系统调用 read() 和 write() 进行数据收发;
3.1.3 UDP连接与通信
DP并不是基于连接的数据通讯 , 也就是说UDP server 并不通过accept接收客户端的连接 , 而UDP client 也不通过 connect 连接到服务器 。
  • UDP server
a.创建套接字 (socket)
b.绑定端口 (bind)
c.数据通讯 (读read / 写write)