现在位置: 首页 > TCP
2018-06-09 05:47 工业·编程 ⁄ 共 1086字 暂无评论
抓包 先从熟悉的下手,HTTP,FTP。 封装包  自己封装包,和现有协议通信。TCP/IP协议作为一个底层协议,不仅可以编写聊天程序,很多高层协议都是基于TCP/IP编写的。 自己造轮子,这样也有助于理解其它协议,比如连接、查询MySQL(用Socekt函数而不是库函数),自己封装一个memched函数库… 以前我大学时用perl发送“飞鸽传书”包,经常上课的时候同学们集体收到弹出信息,却不知道发送者是谁,很有成就感。如果你做已经事没有...
阅读全文
2018-06-02 05:40 工业·编程 ⁄ 共 1500字 暂无评论
1.招聘的顺口溜而已。其实大多数需要的是熟悉socket编程。 tcp/ip是协议族,协议定义的东西包括报文格式,流控,控制块fsm之类。 socket是个编程界面,不用管什么syn/ack/rst/sequence number之类。 (以前还有所谓传输界面编程,另一组api,淘汰了)socket编程并不太关心协议是什么样,stream可以不是tcp,dgram可以不是udp的。当然现在基本没有别的协议在用了。当然如果实现socket库(估计没人重新发明轮子), 或开发路由器...
阅读全文
2018-05-26 05:35 工业·编程 ⁄ 共 1235字 暂无评论
  三次握手,所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。 第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。 第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1...
阅读全文
   在TCP网络应用开发中,作为客户端的程序经常需要主动连接服务器,这时你就需要建立一个Socket,然后调用connect函数连接到服务器地址。正常情况下,这并没有什么问题,但当服务器主机不存在的时候,connect函数可能会等待一分多钟才能返回。如果在主线程中调用connect函数,就会产生长时间无法响应的状况。    在现代的互联网硬件环境中,一分钟的等待有点太长了,我们需要缩短等待时间。 在Linux环境下...
阅读全文
2013-07-22 23:59 工业·编程 ⁄ 共 2985字 暂无评论
1、建立连接协议(三次握手) (1)客户 端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标 志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通 讯。 (3) 客户必须再次回应服务段一个ACK报文,这是报文段3。 2、连接终止协议(四次握手) 由于TCP连 接是全双...
阅读全文
2013-07-22 23:40 工业·编程 ⁄ 共 2174字 暂无评论
1、BSD TCP/IP协议栈      BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协 议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多 TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。 2、uC/IP     uC/IP是由Guy Lancaster编...
阅读全文
TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAIT和TIME_WAIT。  1、LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态。...
阅读全文
2012-12-07 07:30 工业·编程 ⁄ 共 3958字 暂无评论
TCP编程的服务器端一般步骤是 1、 创建一个socket,用函数socket(); 2、 设置socket属性,用函数setsockopt(); * 可选 3、 绑定IP地址、端口等信息到socket上,用函数bind(); 4、 开启监听,用函数listen(); 5、 接收客户端上来的连接,用函数accept(); 6、 收发数据,用函数send()和recv(),者read()和write(); 7、 关闭网络连接; 8、 关闭监听; TCP编程的客户端一般步骤是: 1、 创建一个socket,用函数socket(); 2、 ...
阅读全文
2012-12-04 22:38 工业·编程 ⁄ 共 2835字 暂无评论
TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式。但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈。另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI分层模型协议栈的一种,是一个具体的协议栈。 对于TCP/IP协议栈划分为几层更合适,多年来专家们一直未达成共识,大部分对TCP/IP协议栈的描述都假定它占据了协议结构的4到5个功能层。下面我们对这两种主流的分层方法分别进行描述。 1 基于4层的TCP/IP协议栈...
阅读全文
2012-12-01 21:29 工业·编程 ⁄ 共 1330字 暂无评论
首先解释一段截取的网络数据认识一下。(由a_la_lei解释) 1、-> syn(这一步是初始化发送端的ISN。理论上,它的数据字段没有任何值,消耗的是一个虚字节) TCP: Sequence number = 4071231308 TCP: Acknowledgement number = 0 2、<- ack syn(初始化接收端的ISN,并对收到的包进行确认。因为确认的方式是累计确认,所以尽管第1步传输了一个虚字节,但ACK仍旧是4071231308+1=4071231309) TCP: Sequence number...
阅读全文