
TCP/IP
繁华落尽梦一场
暮春者,春服既成,冠者五六人,童子六七人,浴乎沂,风乎舞雩,咏而归
展开
-
基于ARP和WinPcap的网络嗅探
WinPcap是windows下的一个开源库,简单来说就是用户自己可以发送数据包,比如windows XP之后就不能用socket发送SYN数据包了,因为操作系统进行了封装。所以想要发送自己的数据包,就要绕开操作系统,WinPcap就提供了这样的功能。 再说ARP——地址解析协议,ARP是数据链路层的协议。一般来说,一个局域网会用一个或多个路由器与Internet连接,那么当外部数原创 2015-11-21 20:19:24 · 1162 阅读 · 0 评论 -
accept与connect的超时设置
connect超时:我们都知道,connect对应与三次握手中的第一次发送SYN,而对待服务器的ACK,如果服务器没有启动服务器,有些机器会立刻返回一个RST表示服务器拒绝,从而connect失败,但又些服务器为了防止攻击,什么也不发送,直至客户端connect超时,而这一时间又75s,对于客户端来说是不能接收的。所以需要设置connect的超时时间。利用select设置connect的超原创 2015-12-11 22:46:28 · 14690 阅读 · 3 评论 -
TCP协议疑难杂症全景分析
说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,原创 2015-12-30 10:53:40 · 1998 阅读 · 2 评论 -
TCP的流量控制和拥塞控制
TCP的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwnd 表转载 2015-12-18 12:02:31 · 581 阅读 · 0 评论 -
基于winpcap和syn的dos攻击,亲测
网上这样的帖子很多,但有几个问题一直没解决。1、在计算TCP报头的校验和时应该还有伪报头,很多人都没有。2、在封装以太网数据包时需要用到目的地址的mac地址,由于很多人是在虚拟机上测,目的mac也就知道,但事实上,对于真正的远端主机来说,我们只能获取它的IP地址,而mac地址是无法获取的。而事实上,这儿的目标mac应该写的是网关mac地址。下面看我一步一步写syn攻原创 2015-12-05 15:44:58 · 1055 阅读 · 0 评论 -
自己动手用ICMP写ping程序
ICMP是(Internet Control Message Protocol)Internet控制报文协议,它传数据,但是对数据有监督功能,比如你的数据没到达,则会返回一个icmp报文。icmp最常见的应用就是ping程序,可以探测两个主机之间是否连通。ICMP是网络层协议,但它又和IP一起发送(由IP承载)。[cpp] view plaincopy原创 2015-12-05 15:47:24 · 6289 阅读 · 0 评论 -
winpcap实现从TCP三次握手到发送http请求
之前的文章我都是贴出了协议的格式,对具体字段没有具体说明,今天在这里补充一下。[cpp] view plaincopy/* IP报文格式 0 8 16 32 +------------+------------+-------------------------+ |...原创 2015-12-05 15:49:11 · 895 阅读 · 0 评论 -
HTTP中的Host字段
说白了,HTTP还是TCP协议,所以发起http请求也就是建立TCP连接并发送的过程,也就是说connect-->send。 TCP在connect的时候必须要知道对方我IP地址和监听端口。比如我们要发起对www.baidu.com的请求,那第一步就是得到www.baidu.com对应的IP地址,然后connect,进而send。 在http1.1中新增了一个Host头,那大家原创 2016-03-01 21:11:26 · 25935 阅读 · 3 评论 -
Linux共享内存使用常见陷阱与分析
所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内存写了数据,所做的改动会即时被有访问同一段共享内存的其他进程看到。共享内存的使用大大降低了在大规模数原创 2016-02-01 10:38:29 · 654 阅读 · 0 评论 -
UDP调用connect
大家都知道,在建立TCP连接时需要connect,但UDP调用connect又是什么情况。 在普通的UDP中,我们都是用sendto和recvfrom来收发消息的,这两个函数都有一个sockaddr_in参数,参数里面存放的就是目的端的ip和端口,而TCP的send和recv就不需要这些参数,为什么呢?稍微一想我们就知道,TCP在发送数据的时候已经建立了连接,所以不需要目的端的ip和原创 2016-02-01 10:40:27 · 675 阅读 · 0 评论 -
wireshark中rtmp协议用80端口时显示成tcp
大家知道,80端口默认是http协议,所以wireshark会讲80端口上的默认数据解析成http协议。但是有时候我们也会把其他协议端口也指定成80端口,比如rtmp协议,这个时候用wireshark抓包时,会将rtmp解析成http,由于解析不成功,那就显示成tcp了,具体解决方法如下:原创 2016-10-09 19:57:54 · 2673 阅读 · 0 评论