网络编程基础知识-通信模型

JerryXia 发表于 , 阅读 (617)
动手学习TCPc# UDP服务器一直对BIO、NIO、AIO不太理解,特别是阻塞与异步的区别。Google了一下,一篇文章中的4张图很形象的表述了4种IO模型的原理和区别,收藏一下。首先,贴一张表示四种IO模型的图:同步阻塞IO:同步非阻塞IO:异步阻塞IO:异步非阻塞IO:关于同步和异步的例子:老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。老张把水壶放到火上,立等水开。(同步阻塞) 老张觉得自己有点傻老张把水壶放到火上,去客厅看... 阅读全文

网络编程基础 -- Socket:流,TCP连接,TCP可靠性概述

JerryXia 发表于 , 阅读 (959)
如前文所说,不同类型的Socket与不同类型的底层协议族以及同一协议族中的不同协议相关联。而我想说的主要就是TCP/IP协议族中的内容。现在TCP /IP协议族中的主要socket类型为"流套接字(stream socket)"和"数据报套接字(datagram socket)"。如果类比到现实中 stream socket类似于打电话沟通,datagram socket类似于写信沟通。当然,其他协议族当然也有相应的stream socket和datagram socket。我学习的时候喜... 阅读全文

网络编程基础 -- 分组报文,协议和Socket的概念

JerryXia 发表于 , 阅读 (904)
信息是指由程序创建和建设的“字节序列”。在网络环境中,这些字节序列被称作“分组报文”。一组报文包括了网络用来完成工作的控制信息,还包括了数据信息。协议相当于互相通信的程序(进程间通信)间达成的一种约定,它规定了分组报文的交换方式和它们包含的含义。一组协议规定了以下信息:结构。 比如报文中哪一部分表明了其目的地址。解析。如何对报文中所包含的信息进行解析。设计一组协议,通常是为了在一定约束条件下解决某一特定问题。比如,超文本传输协议http是为了解决在服务期间传递超文本对象的问题。网络层:网络... 阅读全文

网络编程基础 -- 字节和字符,对信息进行编码

JerryXia 发表于 , 阅读 (791)
TCP/IP 协议以字节的方式传输用户数据,并没有对其进行检查和修改。这个特点使得应用程序可以非常灵活地对其中传输的信息进行编码。TCP/IP的唯一约束是,信 息必须在块(chunk)中发送和接收,而块的长度必须是8位的倍数。而字节正好是8位的,因此我们可以认为在TCP/IP协议中传输的信息是字节序列。 鉴于此,我们可以进一步把传输的信息看做数字序列或数组,每个数字的取值范围是0~255(8位)。应用程序协议:明确定义了信息的发送者应该怎样排列和解释这些位序列(bit sequence),... 阅读全文

C#FTP文件操作之上传文件

JerryXia 发表于 , 阅读 (576)
上传文件是一个比较常用的功能,前段时间就做了一个上传图片的模块。开始采用的是共享文件夹的方式,后来发现这种方法不太好。于是果断将其毙掉,后来选择采用FTP的方式进行上传。个人感觉FTP的方式还是比较好用的,所以跟大家分享一下。上传的核心代码:public string Upload(FileUpload fileUpload, string ftpServerIP, string ftpUserID, string ftpPassword) { string filename = ... 阅读全文

修改IP/TCP包头伪造IP

JerryXia 发表于 , 阅读 (8,525)
从某种意义上说,如果能够制造TCP伪连接,那么D.o.S也就比较容易实现了。以前LionD8就曾经用这个思路做出了一个新型D.o.S,而今天,我用的也是这个思路。但是,如果直接伪造TCP三次握手而不作其他任何处理,那却是不行的。因为,当攻击的目标主机接收到我们发过去的伪造的SYN包后会发回一个SYN+ACK包(也就是第二次握手)。而当我们的系统收到这个SYN+ACK包后,由于系统内并没有发起真正的TCP连接,因此系统会发回一个RST包,这个包将使目标主机重置连接。这样,这个伪连接就建立失败... 阅读全文