网络接口(2)

2024-08-24 01:12
文章标签 网络接口

本文主要是介绍网络接口(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、粘包问题

原因:tcp流式套接字,数据与数据之间没有边界感,导致可能多次的数据粘到一起

解决办法:

(1)、规定间隔符,如:“ \r\n”等;

(2)、指定发送数据的长度

(3)、利用struct进行数据打包。

二、recv:用于从套接字接收数据

 ssize_t recv(int sockfd, void *buf, size_t len, int flags);

  • sockfd:是套接字描述符,指定了要接收数据的套接字。
  • buf:是一个指向缓冲区的指针,该缓冲区用于存储接收到的数据。
  • len:指定了缓冲区的长度,即可以接收的最大字节数。
  • flags:指定了接收操作的行为,大多数情况下设置为0。

三 、IP数据报的格式

(1)、版本,占4位,即ip协议的版本

(2)首部长度   占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字(1个32位字长是4字节),因此,当P的首部长度为1111时(即十进制的15),首部长度就达到最大值60字节。

 (3)区分服务,占8位

(4)(4)总长度   总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为216 -1 = 65535字节。
(5)标识

(6)标志(flag)   占3位,但目前只有两位有意义。
标志字段中的最低位记为 MF (More Fragment)。MF = 1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF (Don't Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
(7)片偏移   占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

(8)生存时间   占8位

(9)协议           占8位

(10)首部检验和   占16位

(11)源地址         占32位
(12)目的地址     占32位
 

四、抓包工具------tcpdump 

tcp.port == 端口号 && tcp.ip == IP地址              

可视化界面:wireshark

过滤规则:

1.根据ip地址:

(1)ip.src == ip地址           (2)ip.dst ==ip地址

2.根据端口:

(1)tcp.srcport == 端口号  (2)tcp.dstport == 端口号

(3)udp.srcport == 端口号 (4)udp.dstport == 端口号

3.根据协议类型:tcp,udp,icmp……

4.任意组合以上条件抓包

如果与:and; ip.src == ip地址  and  tcp.dstport == ip地址

如果或:or ;  ip.src == ip地址  or  tcp.dst == ip地址

这篇关于网络接口(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101025

相关文章

Linux网络-使用Tcp协议进行网络通信并通过网络接口实现远端翻译

文章目录 Tcp协议Tcp协议常见API接口1. int socket(int domain, int type, int protocol);2. int bind(int socket, const struct sockaddr *address, socklen_t address_len);struct sockaddr 3. int listen(int socket, int

用MFC 网络接口下载/上传文件

这个只是一个简单的测试程序 #include "afxinet.h"#include <string>using namespace std;BOOL UploadFile(LPCTSTR strURL, //负责接收上传操作的页面的URLLPCTSTR strLocalFileName); //待上传的本地文件路径BOOL CXXDlg::OnInitDialog(){....///测试

微软改进WSL子系统 新版将支持镜像宿主机网络接口及使用外部DNS

Windows SubSystem for Linux (即 WSL) 是微软在 Windows 10/11 中开发的子系统功能,该功能允许用户在 Windows 上安装 Linux 系统和相关环境,对开发者来说可以构建 Linux 开发环境进行工作。不过 WSL 系统在功能上也有不少缺点,典型的就是默认仅支持 NAT 网络,尽管可以通过某些方式分配 IP 地址但过程复杂还需要对虚拟网卡进行切换。

航电AFDX板卡,标准PMC规格、高性能ARINC664网络接口板卡

是一款标准PMC规格、高性能ARINC664网络接口板卡。该产品支持ARINC664网络仿真、测试及数据分析等应用需求;支持2个ARINC664端口,采用RJ45插件形式,每个端口高达64K缓存,2个端口可作为2个独立端口,也可作为冗余端口使用。该产品集成IRIG-B系统时钟,提供多个节点时钟同步功能,便于多节点仿真系统使用。        发送最多支持配置128个发送VL,1024个发送端口;

ip addr 或 ip address 是 Linux 系统中的一个命令,用于显示或修改网络接口的地址信息。

ip addr 或 ip address 是 Linux 系统中的一个命令,用于显示或修改网络接口的地址信息。这个命令是 iproute2 软件包的一部分,通常在现代 Linux 发行版中都是预装的。 当你运行 ip addr 或 ip address 命令时,你会看到系统上所有网络接口的地址配置,包括 IPv4 和 IPv6 地址、MAC 地址、子网掩码、广播地址等信息。 以下是一个 ip

【Linux】网络接口绑定和组合的操作实例

网络接口绑定和组合的操作实例 (一)网卡1. 增2. 查3. 激活——设置网络接口 (二)网络接口绑定1. 概述2. 实验操作3. 删除绑定 (三)网络接口组合1. 概述2. 实验操作 (一)网卡 1. 增 实验操作:增添四张网卡 网卡名IPens16010.0.0.99ens16110.0.0.109ens22410.0.0.119ens25610.0.0.219 1点

Linux捕获网络接口上的网络流量(抓包)

抓包示例命令: tcpdump -i eth0 -w /tmp/capture.pcap host 192.168.1.100 and portrange 8000-9000 1、tcpdump:这是一个用于捕获和显示网络上的数据包的网络分析工具。 2、-i eth0: -i:指定要监听的网络接口。eth0:是网络接口的名称,表示第一个以太网接口。 3、-w /tmp/capture.

ubuntu 18.04 AWS EC2 配置第二块网络接口

一、netplan介绍 ubuntu从17.10开始,已放弃在/etc/network/interfaces里固定IP的配置,而是改成netplan方式。Netplan 使用 YAML 描述文件来配置网络接口,然后,通过这些描述为任何给定的呈现工具生成必要的配置选项。工作原理:Netplan 从 /etc/netplan/*.yaml 读取配置,配置可以是管理员或者系统安装人员配置; 也可以是云

Linux 命令显示网络接口IP地址,可以在谷歌/甲骨文云shell上运行

显示当前网络接口IP 方法A: awk '/32 host/ { print f } {f=$2}' <<< "$(</proc/net/fib_trie)" 方法B: #!/bin/bash ft_local=$(awk '$1=="Local:" {flag=1} flag' <<< "$(</proc/net/fib_trie)") for IF in $(ls /sys/clas

波奇学Linux:网络接口

127.0.0.1本地回环ip,用于本地测试,不会进行网络通信 TCP是面向连接的,服务器比较被动 需要服套接字监听 listen状态  正常通信默认会进行主机序列和网络序列的转换 TcpServer.cc #pragma once#include<iostream>#include<string>#include<cstring>#include<sys/types.h>