首页 > 其他分享 >0230-TCP 发送和接收

0230-TCP 发送和接收

时间:2024-08-14 14:18:43浏览次数:8  
标签:127.0 .. 0.1 456644871 0230 TCP 发送 4444 nop

环境

  • Time 2022-11-25
  • WSL-Ubuntu 22.04
  • Rust 1.65.0

前言

说明

参考:https://doc.rust-lang.org/std/net/struct.TcpListener.html

目标

之前认识了 TCP 报文头,这里去除报文头的细节,直接通信。

main.rs

TCP 由标准库直接支持,可以直接使用。
连接上去后,服务器返回一个 hello。

use std::{io::Write, net::TcpListener};

fn main() -> std::io::Result<()> {
    let listener = TcpListener::bind("127.0.0.1:4444")?;

    for stream in listener.incoming() {
        stream?.write_all("hello".as_bytes())?;
    }
    Ok(())
}

发送请求

root@jiangbo12490:~# nc  127.0.0.1 4444
hello^C

TCPDUMP 抓包

oot@jiangbo12490:~# tcpdump -A -n -i lo port 4444
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on lo, link-type EN10MB (Ethernet), snapshot length 262144 bytes



21:57:44.763832 IP 127.0.0.1.47456 > 127.0.0.1.4444: Flags [S], seq 4268043973, win 65495, options [mss 65495,sackOK,TS val 456644871 ecr 0,nop,wscale 7], length 0
E..<..@.@............`.\.e...........0.........
.7..........
21:57:44.763839 IP 127.0.0.1.4444 > 127.0.0.1.47456: Flags [S.], seq 2090178755, ack 4268043974, win 65483, options [mss 65495,sackOK,TS val 456644871 ecr 456644871,nop,wscale 7], length 0
E..<..@.@.<..........\.`|....e.......0.........
.7...7......
21:57:44.763845 IP 127.0.0.1.47456 > 127.0.0.1.4444: Flags [.], ack 1, win 512, options [nop,nop,TS val 456644871 ecr 456644871], length 0
E..4..@.@............`.\.e..|........(.....
.7...7..
21:57:44.763923 IP 127.0.0.1.4444 > 127.0.0.1.47456: Flags [P.], seq 1:6, ack 1, win 512, options [nop,nop,TS val 456644871 ecr 456644871], length 5
E..9.Z@[email protected].........\.`|....e.......-.....
.7...7..hello
21:57:44.763943 IP 127.0.0.1.47456 > 127.0.0.1.4444: Flags [.], ack 6, win 512, options [nop,nop,TS val 456644871 ecr 456644871], length 0
E..4. @.@............`.\.e..|........(.....
.7...7..
21:57:44.763951 IP 127.0.0.1.4444 > 127.0.0.1.47456: Flags [F.], seq 6, ack 1, win 512, options [nop,nop,TS val 456644871 ecr 456644871], length 0
E..4.[@[email protected].........\.`|....e.......(.....
.7...7..
21:57:44.806605 IP 127.0.0.1.47456 > 127.0.0.1.4444: Flags [.], ack 7, win 512, options [nop,nop,TS val 456644913 ecr 456644871], length 0
E..4.!@.@............`.\.e..|........(.....
.7.1.7..
21:57:50.407455 IP 127.0.0.1.47456 > 127.0.0.1.4444: Flags [F.], seq 1, ack 7, win 512, options [nop,nop,TS val 456650514 ecr 456644871], length 0
E..4."@.@............`.\.e..|........(.....
.7...7..
21:57:50.407475 IP 127.0.0.1.4444 > 127.0.0.1.47456: Flags [.], ack 2, win 512, options [nop,nop,TS val 456650514 ecr 456650514], length 0
E..4..@.@.<..........\.`|....e......T......
.7...7..

一共 9 次报文交换,三次握手,一次数据发送,一次数据确认,四次挥手。

总结

使用 Rust 的标准库,实现 TCP 的通信。

附录

标签:127.0,..,0.1,456644871,0230,TCP,发送,4444,nop
From: https://www.cnblogs.com/jiangbo4444/p/18358874

相关文章

  • 0227-TCP 请求报文
    环境Time2022-11-24WSL-Ubuntu22.04Rust1.65.0pnet0.31.0tun-tap0.1.3前言说明参考:https://docs.rs/pnet/latest/pnet/index.htmlRFC793目标了解TCP协议头中的字段,其也是基于IP协议的。配置TUNIP地址不要和主机的网卡地址在一个段,以便选择这个网卡进行......
  • 使用python 实现自动发送邮件功能,并上传到宝塔
    defsend_qq_mail(subject,content,receiver):sender="你的邮箱"smtpserver="smtp.qq.com"#使用的是qq邮箱port=465#端口号user='你的邮箱'password='授权码'#请确保这是正确的密码或授权码《具体去查询qq邮箱授权码》msg=MI......
  • Modbus Tcp数据通讯实测
    ModbusTCP数据帧ModbusTCP的数据帧可分为两部分:MBAP+PDU。报文头MBAPMBAP为报文头,长度为7字节,组成如下:  帧结构PDUPDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。功能码Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。 ......
  • 短信接口-短信API-短信发送
    接口简介:短信验证码api,营销短信群发功能,群发短信可自动过滤无效号码后再发送。节约运营成本,每超过70个字符按一条短信计费。通过后台添加签名,再添加模版接口地址:https://www.wapi.cn/api_detail/86/204.html批量功能:https://www.wapi.cn/batch/detail_86.html网站地址:htt......
  • springboot集成integration-ip搭建TCP Client
    1、创建客户端属性类tcp:client:host:127.0.0.1port:5001@Data@ConfigurationProperties("tcp.client")publicclassTcpClientProperties{privateStringhost;privateIntegerport;}2、集成integration-ip配置@Slf4j@Configuration@......
  • Proxifier 是一个网络工具,用于通过代理服务器重定向应用程序的网络流量。它使你能够将
    Proxifier是一个网络工具,用于通过代理服务器重定向应用程序的网络流量。它使你能够将所有网络流量或特定应用程序的流量通过代理服务器发送,从而增强隐私、绕过地理限制或访问受限内容。为什么使用Proxifier?隐私保护:通过代理服务器隐藏真实IP地址,增强在线隐私。绕过限制:访......
  • 带你全新理解TCP/IP协议
       协议规定了双方互相沟通时遵守的规则:一方是否主动握手,鞠躬多深,谁先从门口走过,在路的哪一侧行驶,等等。虽然有些协议是法律强制规定的,比如在路的哪一边行驶,但生活中的大多数协议都不太正式。与之形成鲜明对比的是,网络协议是非常精确地进行规范的。   互联网有很多......
  • docker之pull失败。error pulling image configuration: download failed after attem
    一、问题描述docker部署完成后,想pull项目,但是就是报错:errorpullingimageconfiguration:downloadfailedafterattempts=6:dialtcp108.160.170.26:443:connect:connectionrefused, 更奇葩的是执行dockersearchhello-world是可以的。二、解决问题1)问题分析:看报......
  • nodejs+阿里云实现发送短信验证码
    一、阿里云短信服务打开阿里云短信服务控制台1.新增资质2.新增模板与签名3.等待审核通过二、node代码1.首先需要下载依赖npmi@alicloud/pop-core--save2.引入依赖关键信息建议放环境变量中 accessKeyId和accessKeySecret在这里↓ 以下是代码constC......
  • CSP真题答案《202309-01、02》基于Python的实现
    注意:注释在测试CSP时应全部删除!!!第一题:#键盘输入两个数以空格隔开,分别为n,mn,m=map(int,input().split())#根据n值可以循环输入n行值,得到一个列表(操作数)madenum=[list(map(int,input().split()))for_inrange(n)]#根据m值可以循环输入m行值,得到一个列表(初始......