抓包分析connect函数

                connect用于连接指定的socket,连上的情况我们就不说了,这里来说说连不上的情况。

 

#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <stdarg.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <signal.h>
#include <netinet/tcp.h>
#define MAXLINE 4096


int main()
{
   int sockfd;
   struct sockaddr_in servaddr;
   char sendbuf[66495]="1";

   sockfd=socket(AF_INET,SOCK_STREAM,0);
   bzero(&servaddr,sizeof(servaddr));
   servaddr.sin_family=AF_INET;
   servaddr.sin_port=htons(8888);
   servaddr.sin_addr.s_addr = inet_addr("192.3.4.5");


   int ret=connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
   printf("ret=%d\n",ret);

   write(sockfd,sendbuf,sizeof(sendbuf));

   getchar();
   close(sockfd);
   return 0;
}


这里我们先指定一个不可达的ip地址,用tcpdump查看抓包情况。

 

 

[root@localhost test]# tcpdump -iany port 8888 -Xnlps0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
16:20:17.857611 IP 192.168.1.8.51444 > 2.2.2.2.ddi-tcp-1: Flags [S], seq 1607598904, win 14600, options [mss 1460,sackOK,TS val 2274614580 ecr 0,nop,wscale 7], length 0
	0x0000:  4500 003c de0c 4000 4006 96fb c0a8 0108  E..<..@.@.......
	0x0010:  0202 0202 c8f4 22b8 5fd2 0338 0000 0000  ......"._..8....
	0x0020:  a002 3908 95c4 0000 0204 05b4 0402 080a  ..9.............
	0x0030:  8793 dd34 0000 0000 0103 0307            ...4........
16:20:18.856760 IP 192.168.1.8.51444 > 2.2.2.2.ddi-tcp-1: Flags [S], seq 1607598904, win 14600, options [mss 1460,sackOK,TS val 2274615580 ecr 0,nop,wscale 7], length 0
	0x0000:  4500 003c de0d 4000 4006 96fa c0a8 0108  E..<..@.@.......
	0x0010:  0202 0202 c8f4 22b8 5fd2 0338 0000 0000  ......"._..8....
	0x0020:  a002 3908 91dc 0000 0204 05b4 0402 080a  ..9.............
	0x0030:  8793 e11c 0000 0000 0103 0307            ............
16:20:20.856712 IP 192.168.1.8.51444 > 2.2.2.2.ddi-tcp-1: Flags [S], seq 1607598904, win 14600, options [mss 1460,sackOK,TS val 2274617580 ecr 0,nop,wscale 7], length 0
	0x0000:  4500 003c de0e 4000 4006 96f9 c0a8 0108  E..<..@.@.......
	0x0010:  0202 0202 c8f4 22b8 5fd2 0338 0000 0000  ......"._..8....
	0x0020:  a002 3908 8a0c 0000 0204 05b4 0402 080a  ..9.............
	0x0030:  8793 e8ec 0000 0000 0103 0307            ............
16:20:24.856745 IP 192.168.1.8.51444 > 2.2.2.2.ddi-tcp-1: Flags [S], seq 1607598904, win 14600, options [mss 1460,sackOK,TS val 2274621580 ecr 0,nop,wscale 7], length 0
	0x0000:  4500 003c de0f 4000 4006 96f8 c0a8 0108  E..<..@.@.......
	0x0010:  0202 0202 c8f4 22b8 5fd2 0338 0000 0000  ......"._..8....
	0x0020:  a002 3908 7a6c 0000 0204 05b4 0402 080a  ..9.zl..........
	0x0030:  8793 f88c 0000 0000 0103 0307            ............
16:20:32.856835 IP 192.168.1.8.51444 > 2.2.2.2.ddi-tcp-1: Flags [S], seq 1607598904, win 14600, options [mss 1460,sackOK,TS val 2274629580 ecr 0,nop,wscale 7], length 0
	0x0000:  4500 003c de10 4000 4006 96f7 c0a8 0108  E..<..@.@.......
	0x0010:  0202 0202 c8f4 22b8 5fd2 0338 0000 0000  ......"._..8....
	0x0020:  a002 3908 5b2c 0000 0204 05b4 0402 080a  ..9.[,..........
	0x0030:  8794 17cc 0000 0000 0103 0307            ............
16:20:48.856746 IP 192.168.1.8.51444 > 2.2.2.2.ddi-tcp-1: Flags [S], seq 1607598904, win 14600, options [mss 1460,sackOK,TS val 2274645580 ecr 0,nop,wscale 7], length 0
	0x0000:  4500 003c de11 4000 4006 96f6 c0a8 0108  E..<..@.@.......
	0x0010:  0202 0202 c8f4 22b8 5fd2 0338 0000 0000  ......"._..8....
	0x0020:  a002 3908 1cac 0000 0204 05b4 0402 080a  ..9.............
	0x0030:  8794 564c 0000 0000 0103 0307            ..VL........

 

可以看到当访问不可达的IP地址时,发送超时重传了,这也是tcp的特性之一。

 

将上述IP地址改成可达的,如:127.0.0.1,用tcpdump查看抓包情况。

 

[root@localhost test]# tcpdump -iany port 8888 -Xnlps0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
16:22:18.519619 IP 127.0.0.1.41966 > 127.0.0.1.ddi-tcp-1: Flags [S], seq 403372410, win 65495, options [mss 65495,sackOK,TS val 2274735242 ecr 0,nop,wscale 7], length 0
	0x0000:  4500 003c 4df0 4000 4006 eec9 7f00 0001  E..<M.@.@.......
	0x0010:  7f00 0001 a3ee 22b8 180a f97a 0000 0000  ......"....z....
	0x0020:  a002 ffd7 3bb6 0000 0204 ffd7 0402 080a  ....;...........
	0x0030:  8795 b48a 0000 0000 0103 0307            ............
16:22:18.519633 IP 127.0.0.1.ddi-tcp-1 > 127.0.0.1.41966: Flags [R.], seq 0, ack 403372411, win 0, length 0
	0x0000:  4500 0028 0000 4000 4006 3cce 7f00 0001  E..(..@.@.<.....
	0x0010:  7f00 0001 22b8 a3ee 0000 0000 180a f97b  ...."..........{
	0x0020:  5014 0000 d9a1 0000                      P.......


因为没有本地服务端在端口8888监听,所以直接返回RST。

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Qt的connect函数是用于在Qt中连接信号和槽的函数。它有多个重载形式,但基本形式如下: ``` QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection) ``` 该函数的参数包括发送者QObject指针、信号字符串、接收者QObject指针、槽函数字符串和连接类型。发送者和接收者可以是同一个QObject,而信号和槽的参数必须对应上。 在使用该函数时,需要注意函数的参数是否带括号,因为在跨平台编译过程中,Qt的信号和槽函数的匹配是严格的,如果参数不匹配,会出现错误。 总结起来,Qt的connect函数是用于在Qt中连接信号和槽的重要工具,通过它可以实现对象之间的通信和交互。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Qt中的 connect 函数](https://blog.csdn.net/QtCompany/article/details/130604226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [QT中connect函数的几种用法详解总结](https://blog.csdn.net/u011394397/article/details/123798595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

盼盼编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值