3.1 Linux随手简记之网络编程篇(一)

网络编程学习篇(一)

一、计算机网络概述

1.1 计算机网络发展简史

  • 最早的广域网是基于电路交换的网络,通过建立物理通路来实现通信双方的连接,这种方式不适合突发式的计算机数据传输。

1.1.3 计算机网络的要求

  • 计算机网络设计要求包括:简单结构、可靠传输、连接不同种类计算机、网络节点同等重要性、必须具备冗余路由。

1.1.4 分组交换

  • 分组交换是一种通过路由选择传送数据的方式,每个分组包含首部和数据段,这种方式提高了传输效率。

1.1.6 因特网发展史

  • 因特网的发展从单个ARPANET开始,到1983年TCP/IP协议成为其标准协议,逐步发展成为现在的互联网。

1.2 TCP/IP 协议简介

  • TCP/IP协议是一套能使不同计算机之间互联的通信协议族,它采用分层的方式组织,每一层为上一层提供服务。

1.2.2 IP 协议简介

  • IP协议是一种无连接、不保证可靠传输的协议,它仅提供尽力而为的传输服务,并且每个IP数据包都包含源地址和目的地址。

1.2.3 TCP 协议简介

  • TCP是一种面向连接的、可靠的传输层通信协议,它通过建立连接、数据传输、释放连接的三次握手过程,确保数据的可靠传输。

1.2.4 UDP 协议简介

  • UDP是一种面向无连接的传输层通信协议,它不保证数据包顺序、没有错误检测和重传机制,适用于快速传输和简单查询应答服务。

1.3 MAC 地址、IP 地址、Netmask、端口

  • MAC地址:网络设备的唯一标识,由48位二进制数组成。
  • IP地址:Internet上的主机编址方式,由32位二进制数组成,分为网络ID和主机ID。
  • 子网掩码:用于区分IP地址中的网络ID和主机ID。
  • 端口:用于区分系统中的多个进程,每个端口对应一个进程。

二、UDP 编程

2.1 编程准备-字节序、地址转换

  • 字节序:数据存储顺序,分为小端格式和大端格式。
  • 网络字节序:网络协议指定的通讯字节序为大端。
  • 字节序转换函数htonlhtonsntohlntohs用于主机字节序与网络字节序之间的转换。
  • 地址转换函数inet_ptoninet_ntop用于IP地址字符串与整型数据之间的转换。

2.2 UDP 介绍、编程流程

  • UDP协议:无连接的用户数据报协议,适用于不需要可靠传输的应用。
  • socket接口:网络通信的进程间通信机制,socket是一种文件描述符。

2.3 UDP 编程-创建套接字

  • 创建套接字:使用socket函数创建用于网络通信的socket套接字。

2.4 UDP 编程-发送、绑定、接收数据

  • 发送数据:使用sendto函数向指定地址发送UDP数据。
  • 绑定:使用bind函数将IP地址和端口与套接字关联。
  • 接收数据:使用recvfrom函数接收UDP数据。

2.5 UDP 编程-client、server

  • 客户端服务器都可以发送和接收数据,但在网络编程中,通常将提供服务的一方称为服务器,接受服务的一方称为客户端。

三、UDP 编程-TFTP、广播、多播

3.1 TFTP 简介、通信过程

  • TFTP:简单文件传送协议,基于UDP协议实现,用于小文件传输。

3.2 TFTP 协议分析

  • TFTP通信过程:包括服务器在69号端口等待请求、使用临时端口与客户端通信、数据包编号变化、数据传输确认等步骤。

3.3 练习—TFTP 客户端

  • TFTP客户端:构造请求报文,与服务器通信,接收数据直至传输结束。

3.4 UDP 广播

  • 广播:一台主机向同一子网内所有主机发送数据的方式,只能通过UDP或原始IP实现。

3.5 UDP 多播

  • 多播:数据在同一分组内收发,可用于广域网,使用D类IP地址。

四、TCP 网络编程

4.1 TCP 介绍、编程流程

  • TCP:面向连接的流式协议,提供可靠传输,出错重传,每接收数据需确认。

4.2 TCP 编程-socket

  • TCP套接字创建:与UDP类似,但用于面向连接的服务。

4.3 TCP 客户端-connect、send、recv

  • connect:主动与服务器建立连接。
  • send:发送数据到已连接的服务器。
  • recv:接收服务器发送的数据。

4.4 TCP 服务器-bind、listen、accept

  • bind:将套接字绑定到特定的IP地址和端口。
  • listen:使套接字变为被动监听状态,等待连接。
  • accept:接受客户端的连接请求,创建新的套接字处理连接。

4.5 TCP 编程-close、三次握手、四次挥手

  • close:关闭套接字,释放资源。
  • 三次握手:建立TCP连接的过程。
  • 四次挥手:断开TCP连接的过程。

4.6 TCP 并发服务器

  • 多进程并发:通过创建多个进程来处理多个客户端连接。
  • 多线程并发:通过创建多个线程来处理多个客户端连接。

4.7 Web 服务器介绍

  • Web服务器:使用HTTP协议与浏览器进行信息交流,可处理用户请求,运行脚本和程序。

五、网络通信过程

5.1 网络通信概述

  • 网络通信:涉及多线程、多进程开发,C/S、B/S模式开发,需要对网络通信整个过程有整体的掌握。

5.2 通信过程(PC+switch)

  • 交换机:扩大网络,连接更多设备,具备转发过滤、学习功能等。

5.3 通信过程(PC+switch+router)

  • 路由器:连接逻辑上分开的网络,具备路由功能,选择IP路径。

5.4 通信过程(浏览器跨网访问 Web 服务器)

  • 浏览器访问Web服务器:涉及DNS解析、默认网关设置、路由表查找等过程。

六、Linux 防火墙

6.1 认识防火墙

  • 防火墙定义:在网络之间执行访问控制策略的设备。
  • 防火墙分类:硬件防火墙、软件防火墙。
  • 防火墙任务:切割信任与不信任网段,划分服务,分析数据包状态。

6.2 防火墙的一般网络布线示意

  • 防火墙网络布线:保护网络不受外部和内部攻击。

6.3 防火墙的使用限制

  • 防火墙限制:不能保证网络绝对安全,不能阻止病毒或木马,对内部攻击无能为力。

6.4 Linux 的数据包过滤软件:iptables

  • iptables规则:重要性、表格与链的概念,规则查看、清除、定义默认策略等。

七、原始套接字

7.1 TCP、UDP 开发回顾

  • 原始套接字:不同于SOCK_STREAM、SOCK_DGRAM的套接字,用于接收本机网卡上所有数据帧,发送自定义数据包。

7.2 原始套接字概述、创建

  • 创建原始套接字:使用socket(PF_PACKET, SOCK_RAW, protocol),可以捕获和发送特定协议类型的数据包。

7.3 数据包详解

  • 数据包格式:Ethernet、IP、TCP、UDP、ICMP等协议的数据包结构。

7.4 编程实例—分析 MAC 数据包

  • 分析MAC数据包:通过原始套接字捕获和分析链路层的数据包。

7.5 sendto 发送数据

  • sendto:使用sendto函数通过 原始套接字发送数据,需要指定本机网络接口。

八、网络开发工具包-libpcap、libnet

8.1 socket 原始套接字回顾

  • 原始套接字:允许开发者发送任意数据包到网络,用于开发网络攻击等特殊软件。

8.2 libpcap 介绍、安装

  • Libpcap概念:一个网络数据捕获开发包,提供高层编程接口,隐藏操作系统细节。
  • Libpcap安装:通过包管理器安装libpcap库。

8.3 libpcap 开发实例

  • Libpcap开发:基本步骤包括打开网络设备、设置过滤规则、捕获数据、关闭网络设备。

8.4 libpcap 练习——网络数据分析器

  • 网络数据分析器:使用libpcap开发,用于捕获和分析各种类型的网络数据包。

8.5 Libnet 介绍、安装

  • Libnet概念:专业的构造和发送网络数据包的开发工具包,提供高层次的API函数库。
  • Libnet安装:安装Libnet库,用于构造和发送网络数据包。

8.6 Libnet 开发实例

  • Libnet开发:基本步骤包括数据包内存初始化、构造数据包、发送数据、释放资源。

50e0b0de27194687a9f0357b94e64104.png

 

 

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式&机器人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值