﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava--随笔分类-ftp,http,tcp,udp等</title><link>http://www.blogjava.net/leekiang/category/34853.html</link><description>MDA/MDD/TDD/DDD/DDDDDDD</description><language>zh-cn</language><lastBuildDate>Mon, 19 Jul 2010 20:53:45 GMT</lastBuildDate><pubDate>Mon, 19 Jul 2010 20:53:45 GMT</pubDate><ttl>60</ttl><item><title>网络协议相关</title><link>http://www.blogjava.net/leekiang/archive/2010/07/20/326590.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Mon, 19 Jul 2010 18:33:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/07/20/326590.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/326590.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/07/20/326590.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/326590.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/326590.html</trackback:ping><description><![CDATA[SSHTools is a suite of Java SSH applications providing a Java SSH API, 
SSH Terminal, SSH secured VNC client, SFTP client and SSH Daemon.
    <img src ="http://www.blogjava.net/leekiang/aggbug/326590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-07-20 02:33 <a href="http://www.blogjava.net/leekiang/archive/2010/07/20/326590.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP: SYN ACK FIN RST PSH URG</title><link>http://www.blogjava.net/leekiang/archive/2010/04/14/318360.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Wed, 14 Apr 2010 10:43:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/04/14/318360.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/318360.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/04/14/318360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/318360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/318360.html</trackback:ping><description><![CDATA[
		<span style="" id="reply_content_95182746">三次握手Three-way Handshake
<br /><br />
一个虚拟连接的建立是通过三次握手来实现的
<br /><br />
1. (B) --&gt; [SYN] --&gt; (A)
<br /><br />
假如服务器A和客户机B通讯. 当A要和B通信时，B首先向A发一个SYN (Synchronize) 标记的包，告诉A请求建立连接.
<br /><br />
注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources).
认识到这点很重要，只有当A受到B发来的SYN包，才可建立连接，除此之外别无他法。因此，如果你的防火墙丢弃所有的发往外网接口的SYN包，那么你将不
能让外部任何主机主动建立连接。 <br /><br />
2. (B) &lt;-- [SYN/ACK] &lt;--(A)
<br /><br />
接着，A收到后会发一个对SYN包的确认包(SYN/ACK)回去，表示对第一个SYN包的确认，并继续握手操作.
<br /><br />
注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包.
<br /><br />
3. (B) --&gt; [ACK] --&gt; (A)
<br /><br />
B收到SYN/ACK 包,B发一个确认包(ACK)，通知A连接已建立。至此，三次握手完成，一个TCP连接完成
<br /><br />
Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后，TCP连接的每个包都会设置ACK位
<br /><br />
这就是为何连接跟踪很重要的原因了.
没有连接跟踪,防火墙将无法判断收到的ACK包是否属于一个已经建立的连接.一般的包过滤(Ipchains)收到ACK包时,会让它通过(这绝对不是个
好主意). 而当状态型防火墙收到此种包时，它会先在连接表中查找是否属于哪个已建连接，否则丢弃该包 <br /><br />
四次握手Four-way Handshake
<br /><br />
四次握手用来关闭已建立的TCP连接
<br /><br />
1. (B) --&gt; ACK/FIN --&gt; (A)
<br /><br />
2. (B) &lt;-- ACK &lt;-- (A)
<br /><br />
3. (B) &lt;-- ACK/FIN &lt;-- (A)
<br /><br />
4. (B) --&gt; ACK --&gt; (A)
<br /><br />
注意: 由于TCP连接是双向连接, 因此关闭连接需要在两个方向上做。ACK/FIN 包(ACK 和FIN
标记设为1)通常被认为是FIN(终结)包.然而, 由于连接还没有关闭, FIN包总是打上ACK标记.
没有ACK标记而仅有FIN标记的包不是合法的包，并且通常被认为是恶意的 <br /><br />
连接复位Resetting a connection
<br /><br />
四次握手不是关闭TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST
(Reset)包将被发送. 注意在，由于RST包不是TCP连接中的必须部分, 可以只发送RST包(即不带ACK标记).
但在正常的TCP连接中RST包可以带ACK确认标记 <br /><br />
请注意RST包是可以不要收到方确认的?
<br /><br />
无效的TCP标记Invalid TCP Flags
<br /><br />
到目前为止，你已经看到了 SYN, ACK, FIN, 和RST 标记. 另外，还有PSH (Push) 和URG (Urgent)标记.
<br /><br />
最常见的非法组合是SYN/FIN 包. 注意:由于 SYN包是用来初始化连接的, 它不可能和 FIN和RST标记一起出现. 这也是一个恶意攻击.
<br /><br />
由于现在大多数防火墙已知 SYN/FIN 包, 别的一些组合,例如SYN/FIN/PSH, SYN/FIN/RST, 
SYN/FIN/RST/PSH。很明显，当网络中出现这种包时，很你的网络肯定受到攻击了。
<br /><br />
别的已知的非法包有FIN
(无ACK标记)和"NULL"包。如同早先讨论的，由于ACK/FIN包的出现是为了关闭一个TCP连接，那么正常的FIN包总是带有 ACK
标记。"NULL"包就是没有任何TCP标记的包(URG,ACK,PSH,RST,SYN,FIN都为0)。 <br /><br />
到目前为止，正常的网络活动下，TCP协议栈不可能产生带有上面提到的任何一种标记组合的TCP包。当你发现这些不正常的包时，肯定有人对你的网络不怀好意。<br /><br />来源:http://doubao.javaeye.com/blog/267207<br />http://hi.baidu.com/abcserver/blog/item/aa1a347310c335148601b07c.html<br /></span>
<img src ="http://www.blogjava.net/leekiang/aggbug/318360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-04-14 18:43 <a href="http://www.blogjava.net/leekiang/archive/2010/04/14/318360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LDAP笔记</title><link>http://www.blogjava.net/leekiang/archive/2010/02/11/312584.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Thu, 11 Feb 2010 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2010/02/11/312584.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/312584.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2010/02/11/312584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/312584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/312584.html</trackback:ping><description><![CDATA[JXplorer:The World's Finest Ldap Browser<br /><br /><br /><div class="entry-body nerr"><p>CN,OU,DC都是LDAP连接服务器的端字符串中的区别名称（DN,distinguished    name）;<br />LDAP连接服务器的连接字串格式为：ldap://servername/DN   <br />   其中DN有三个属性，分别是CN,OU,DC   <br />   LDAP是一种通讯协议，如同HTTP是一种协议一样的！</p><p>在     LDAP     目录中。           <br />    DC     (Domain     Component)       <br />    CN     (Common     Name)       <br />    OU     (Organizational     Unit)       <br />   一个 LDAP     目录类似于文件系统目录.     下列目录:       <br />          DC=redmond,DC=wa,DC=microsoft,DC=com       <br />    如果我们类比文件系统的话，可被看作如下文件路径:    <br />          Com\Microsoft\Wa\Redmond   <br /><br /><font size="2"><font color="#c60a00">例如：CN</font>=test,<font color="#c60a00">OU</font>=developer,<font color="#c60a00">DC</font>=domainname,<font color="#c60a00">DC</font>=com</font></p><p>在上面的代码中cn=test     可能代表一个用户名， ou=<font size="2">developer </font>代表一个 active     directory中的     组织单位。这句话的含义可能就是说明test这个对象处在domainname. com域的developer组织单元中。</p></div><br />转自<br /><a href="http://stevenit.bokee.com/viewdiary.30578007.html">http://stevenit.bokee.com/viewdiary.30578007.html</a><br /><br />操作ldap的包有<br />SUN的LDAP API<br />mozilla的sdk,见http://www.mozilla.org/directory/javasdk.html<br />novell的jldap,见http://www.openldap.org/jldap/<br />不过spring ldap的ldaptemplate更好用<br />http://wangyaodi.javaeye.com/blog/202514<br />http://junewolf.javaeye.com/blog/52091<br /><img src ="http://www.blogjava.net/leekiang/aggbug/312584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2010-02-11 15:49 <a href="http://www.blogjava.net/leekiang/archive/2010/02/11/312584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>http协议笔记</title><link>http://www.blogjava.net/leekiang/archive/2009/03/11/258955.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Tue, 10 Mar 2009 19:29:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2009/03/11/258955.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/258955.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2009/03/11/258955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/258955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/258955.html</trackback:ping><description><![CDATA[1，<br />Keep-Alive功能使客户端到服务器端的连接持续有效，当出现对服务器的后继请求时，Keep-Alive功能避免了建立或者重新建立连接。市场上
的大部分Web服务器，包括iPlanet、IIS和Apache，都支持HTTP
Keep-Alive。对于提供静态内容的网站来说，这个功能通常很有用。但是，对于负担较重的网站来说，这里存在另外一个问题：虽然为客户保留打开的连
接有一定的好处，但它同样影响了性能，因为在处理暂停期间，本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时，Keep-
Alive功能对资源利用的影响尤其突出。 此功能为HTTP 1.1预设的功能，HTTP 1.0加上Keep-Alive
header也可以提供HTTP的持续作用功能。<img src ="http://www.blogjava.net/leekiang/aggbug/258955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2009-03-11 03:29 <a href="http://www.blogjava.net/leekiang/archive/2009/03/11/258955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ftp笔记</title><link>http://www.blogjava.net/leekiang/archive/2008/09/26/231313.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Fri, 26 Sep 2008 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/09/26/231313.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/231313.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/09/26/231313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/231313.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/231313.html</trackback:ping><description><![CDATA[1,用filezilla服务器时可以方便的给一个用户分配多个目录，先设置一个主目录，别的目录可以用别名(必须以"/"符号开头)，这样别的目录就虚拟为主目录下的子目录了。不知道支不支持设置局域网里的其他机器的文件夹，要是支持就更好了。<br /><br />2,ftp 文件上传服务器设置的几点经验和窍门！<br />http://hi.baidu.com/wgzx/blog/item/554976affaa3d1fffbed5098.html<br /><br />3,<a target="_blank" href="http://tieba.baidu.com/f?kz=67776525">FileZilla FTP Server安装设置教程</a><br />FileZilla Server Interface--&gt;edit--&gt;settings--&gt;general settings--&gt;Max.Number of users(允许最大并发连接客户端的数量)<br /><br />4,http://www.blogjava.net/yegucheng/archive/2007/10/26/156008.html<br />在使用apache的net包处理Serv-U和x-lighgt时遇到的几点不同<br />
进入一个空目录：<br />
 在serv-U下，调用fTPClient.changeWorkingDirectory("")方法没有任何问题(指向一个空的目录)<br />
 在x-light下，调用方法，会返回501信息<br />
当下载完文件后：<br />
 使用 fTPClient.retrieveFileStream(url)方法下载文件，在serv-U下，可以直接下载下一个文件<br />
 但是在x-light下，调用 fTPClient.retrieveFileStream(url)方法后，<br />
 必须执行 fTPClient.completePendingCommand()方法，关闭当前下载操作，<br />
 才能执行下一个下载任务（在net包的API中有相关的规定）。<br /><br />5,摘自http://blog.csdn.net/wangjian5748/archive/2008/11/28/3404619.aspx<br /><div>commons-net的FTPClient，在使用public InputStream retrieveFileStream(String remote)<br /></div><div>方法时需要特别注意，在调用这个接口后，一定要手动close掉返回的InputStream，然后再调用completePendingCommand方法，若不是按照这个顺序，则不对，伪代码：</div><div><div class="highlighter"><ol class="highlighter-j"><li><span>InputStream is = ftpClient.retrieveFileStream(remote);</span></li><li class="alt"><span>is.close();</span></li><li><span>ftpClient.completePendingCommand();</span></li></ol></div></div><div>retrieveFileStream的API文档说的有点罗嗦，还可以使用下列方法来替换上述使用方式</div><div>使用一个中间文件来做一个转接，这种方式比上述方法的好处就是自己容易控制，不容易出问题。伪代码如下：</div><div><div class="highlighter"><ol class="highlighter-j"><li><span>File localFile = </span><span class="keyword">new</span><span> File(localPath, localFileName);</span></li><li class="alt"><span>OutputStream output = </span><span class="keyword">new</span><span> FileOutputStream(localFile);</span></li><li><span>ftpClient.retrieveFile(remoteFileName, output);</span></li><li class="alt"><span>output.close();</span></li><li><span>InputStream input = </span><span class="keyword">new</span><span> FileInputStream(localFile);</span></li></ol></div>关于原因这里有比较具体的分析:<a href="http://marc.info/?l=jakarta-commons-user&amp;m=110443645016720&amp;w=2">http://marc.info/?l=jakarta-commons-user&amp;m=110443645016720&amp;w=2</a></div><div>简单来说：completePendingCommand()会一直在等FTP Server返回226 Transfer complete，但是FTP Server只有在接受到InputStream执行close方法时，才会返回。所以先要执行close方法<br /><br />6，<br /><a href="http://blog.chinaunix.net/u2/88035/showart_1863942.html"><font style="font-size: 14pt;" color="#02368d"><b>Java实现的ftp服务器 源代码</b></font></a><br /><br />7,java ftp<br />http://hi.baidu.com/montaojavahome/blog/item/d8d2691e1236241940341722.html<br /><br /></div><a href="http://www.javaeye.com/topic/116634">使用J-FTP上传下载</a><br /><br /><br /><br /><img src ="http://www.blogjava.net/leekiang/aggbug/231313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-09-26 16:02 <a href="http://www.blogjava.net/leekiang/archive/2008/09/26/231313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java ftp笔记</title><link>http://www.blogjava.net/leekiang/archive/2008/09/22/230329.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sun, 21 Sep 2008 20:03:00 GMT</pubDate><guid>http://www.blogjava.net/leekiang/archive/2008/09/22/230329.html</guid><wfw:comment>http://www.blogjava.net/leekiang/comments/230329.html</wfw:comment><comments>http://www.blogjava.net/leekiang/archive/2008/09/22/230329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leekiang/comments/commentRss/230329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leekiang/services/trackbacks/230329.html</trackback:ping><description><![CDATA[1，commons-net ftpclient 怎么判断服务器是否存在文件A?<br />FTPFile[]   ftpFiles   =   ftp.listFiles("a");   <br />   System.out.println(ftpFiles.length); <br /><br />2，http://www.blogjava.net/sterning/archive/2007/10/22/154861.html<br /><br />3,乱码问题.<br />应用服务器在unix上，ftp在window上，下载时换行处可能有问题，<font size="3"><br /> 解决:将文件传输类型设置为二进制<br />
                             ftpClient.setFileType(</font><a href="ftp://ftp.binary_file_type/"><font size="3">FTP.BINARY_FILE_TYPE</font></a><font size="3">);</font><br /> 见<br />public <a href="http://java.sun.com/j2se/1.3/docs/api/java/io/InputStream.html" title="class or interface in java.io">InputStream</a><b>retrieveFileStream</b>(<a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html" title="class or interface in java.lang">String</a> path)方法的注释:<br /><pre>If the current file type is ASCII, the returned InputStream will convert line separators in the file to
the local representation.<br /></pre><a target="_blank" href="/wodong/archive/2008/08/21/wodong.html">commons.net包中的FTPClient.listFiles()方法返回null的问题及其解决方案</a><br />http://hi.baidu.com/3seefans/blog/item/667e32afa0a58bc97cd92aa2.html<br />http://hi.baidu.com/hzwei206/blog/item/7c901d2debf7e136359bf7cd.html<br /> <br />6,<br />http://zjsoft.javaeye.com/blog/189874<br />http://topic.csdn.net/t/20050820/13/4220332.html<br />http://www.cnblogs.com/swingboat/archive/2005/05/31/165613.html<br />http://www.onflex.org/ted/2007/05/flexftp-ftp-client-in-flex-using.php<br />http://tech.it168.com/j/2007-10-18/200710182058687.shtml<br />http://hi.baidu.com/3seefans/blog/item/667e32afa0a58bc97cd92aa2.html<br /><br /><img src ="http://www.blogjava.net/leekiang/aggbug/230329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leekiang/" target="_blank">leekiang</a> 2008-09-22 04:03 <a href="http://www.blogjava.net/leekiang/archive/2008/09/22/230329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>