htcp协议
A. 什么是TCPH
/***************************
实在对不起。因为我现在没有调试运行环境(没装任何电子邮件程序),只是在后备的源码上删改的,没有运行确认。检查发现确实漏了这样一句:
tcph = (tcp_header *) ((u_char*)ih + (ih->ver_ihl & 15)*4);
还挺复杂,如果不清楚ip头的数据结构这一句还真对付不出来。加在ih=...后面即可。
另外, buf[i]=0; 之前加上 buf[i++]='\n'; 可能使输出更好读。或者像下面这样改,就不用 flog 和 isFirst了。原来的struct tm *ltime; 也不需要。
如果还不行,看来我就得装一个Foxmail实际调试了。
删改的结果可能还有错误或有的东西没有用到而没有删去。我注明了是参考 group__wpcap__tut6.html
但详细网址已经记不得了,从别的文档检查,可能是 , 讲解的非常详细。
**************************/
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
u_char buf[80], *s, *d;
int i;
ip_header *ih = (ip_header *) (pkt_data + 14);
tcp_header *tcph = (tcp_header *) ((u_char*)ih + (ih->ver_ihl & 15)*4);
for ( i = 0, s = (u_char *)tcph + sizeof(tcp_header),
d = (u_char *)ih + ntohs( ih->tlen);
s < d && i < 40; ++i, ++s) buf[i] = *s;
buf[i] = '\0';
printf("%s\n", buf);
}
/*****************************************
实质上数据内容开始于 s = (u_char *)tcph + sizeof(tcp_header);
结束于 d = (u_char *)ih + ntohs( ih->tlen);
********************************/
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
B. http是什么协议
HTTP 协议是在客户端 - 服务器计算模型中用作请求 - 响应协议。一个网页浏览器,例如,可
能是客户端,并在计算机上运行的应用程序托管一个网站可能是服务器。客户端向服务器提交
HTTP请求消息。服务器,该服务器提供的资源,如HTML文件和其他内容,或代表客户机的
执行其它功能,返回一个响应消息给客户端。响应包含有关请求的完成状态信息,还可能在其
消息正文中包含请求的内容。
Web浏览器是用户代理(UA)的示例。其他类型的用户代理包括搜索提供商,语音浏览器,
移动应用程序以及访问,使用或显示网络内容的其他软件所使用的索引软件。
HTTP旨在允许中间网络元素改进或启用客户端和服务器之间的通信。高流量网站通常受益于
代表上游服务器提供内容的Web缓存服务器,以缩短响应时间。Web浏览器缓存先前访问的
Web资源,并在可能的情况下重用它们以减少网络流量。通过使用外部服务器中继消息,专用
网络边界处的HTTP代理服务器可以在没有全局可路由地址的情况下促进客户端的通信。
HTTP是在Internet协议套件框架内设计的应用程序层协议。它的定义假定底层和可靠传输层协
议和传输控制协议(TCP)是常用的。但是,HTTP可以适用于使用不可靠的协议,例如用户数
据报协议(UDP),例如在HTTPU和简单服务发现协议(SSDP)中。
(2)htcp协议扩展阅读:
与HTTP协议非常相似的一个协议HTTPS协议
安全超文本传输协议(HTTPS)是超文本传输协议(HTTP)的扩展。它用于通过计算机网络
进行安全通信,并在因特网上广泛使用。在HTTPS中,通信协议使用传输层安全性(TLS)或
以前的安全套接字层(SSL)进行加密。因此,该协议通常也称为HTTP over TLS,或HTTP
over SSL。
HTTPS的主要动机是对所访问网站的身份验证以及在传输过程中保护所交换数据的隐私和完整
性。它可以防止中间人攻击。客户端和服务器之间的通信的双向加密防止了对通信的窃听和篡
改。在实践中,这提供了一个合理的保证,即一个人在不受攻击者干扰的情况下进行通信,而
不是冒名顶替者。
C. HTTP协议是什么意思
HTTP协议指的是超文本传输协议。
超文本传输协议是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本。这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会和互联网工程工作小组共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
(3)htcp协议扩展阅读:
HTTP协议的主要特点:
1、简单快速
客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST,每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
2、无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
3、无状态
HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
D. 如何关闭电脑包括tcph和udp协议135和445端口
1、点开始——控制面板;
2、点系统和安全;
3、点管回理工具;
4、点本地安全策略;答
5、选择【IP安全策略,在本地计算机】,鼠标右键选择创建IP安全策略;
6、输入IP安全策略名称,点下一步;
7、点下一步;
8、点完成;
9、将【使用“添加向导”】前的勾去掉,点添加;
10、点添加;
11、将【使用“添加向导”】前的勾去掉,点添加;
12、源地址:选择【任何IP地址】;
E. http协议是什么协议它的作用是
WWW的核心——HTTP协议
众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP、Archie Gopher等是建立在/IP协议之上的应用层协议,不同的协议对应着不同的应用。<BR> WWW服务器使用的主要协议是HTTP协议,即超文体传输协议。由于HTTP协议支持的服务不限于WWW,还可以是其它服务,因而HTTP协议允许用户在统一的界面下,采用不同的协议访问不同的服务,如FTP、Archie、SMTP、NNTP等。另外,HTTP协议还可用于名字服务器和分布式对象管理。
2.1 HTTP协议简介
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
2.2 HTTP协议的几个重要概念
1.连接(Connection):一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。
2.消息(Message):HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连接传输。
3.请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号
4.响应(Response):一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。
5.资源(Resource):由URI标识的网络数据对象或服务。
6.实体(Entity):数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。
7.客户机(Client):一个为发送请求目的而建立连接的应用程序。
8.用户代理(User agent):初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。
9.服务器(Server):一个接受连接并对请求返回信息的应用程序。
10.源服务器(Origin server):是一个给定资源可以在其上驻留或被创建的服务器。
11.代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。
代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。
12.网关(Gateway):一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。
13.通道(Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。
14.缓存(Cache):反应信息的局域存储。
2.3 HTTP协议的运作方式
HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成(见图2-1)。
图2-1
当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用。 图2-2
上面的图2-2表明了在用户代理(UA)和源服务器(O)之间有三个中介(A,B和C)。一个通过整个链的请求或响应消息必须经过四个连接段。这个区别是重要的,因为一些HTTP通讯选择可能应用于最近的连接、没有通道的邻居,应用于链的终点或应用于沿链的所有连接。尽管图2-2是线性的,每个参与者都可能从事多重的、并发的通讯。例如,B可能从许多客户机接收请求而不通过A,并且/或者不通过C把请求送到A,在同时它还可能处理A的请求。
任何针对不作为通道的汇聚可能为处理请求启用一个内部缓存。缓存的效果是请求/响应链被缩短,条件是沿链的参与者之一具有一个缓存的响应作用于那个请求。下图说明结果链,其条件是针对一个未被UA或A加缓存的请求,B有一个经过C来自O的一个前期响应的缓存拷贝。
图2-3
在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。
以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。
首先,简单介绍基于HTTP协议的客户/服务器模式的信息交换过程,如图2-4所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。
图2-4
在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP80端口(WWW的缺省端口)监听,等待连接的出现。
下面,讨论HTTP协议下客户/服务器模式中信息交换的实现。 1.建立连接 连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。
2.发送请求
打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。
HTTP/1.0 请求消息的格式为:
请求消息=请求行(通用信息|请求头|实体头) CRLF[实体内容]
请求 行=方法 请求URL HTTP版本号 CRLF
方 法=GET|HEAD|POST|扩展方法
U R L=协议名称+宿主名+目录与文件名
请求行中的方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的请求对象对应GET的结果是不同的,对应关系如下:
对象 GET的结果
文件 文件的内容
程序 该程序的执行结果
数据库查询 查询结果
HEAD——要求服务器查找某对象的元信息,而不是对象本身。
POST——从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POST方法。POST主要用于发送HTML文本中FORM的内容,让CGI程序处理。
一个请求的例子为:
GET http://networking.zju.e.cn/zju/index.htm HTTP/1.0
头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答 。
请求头——告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。
实体头——实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
实体——请求或应答对象本身。
3.发送响应
服务器在处理完客户的请求之后,要向客户机发送响应消息。
HTTP/1.0的响应消息格式如下:
响应消息=状态行(通用信息头|响应头|实体头) CRLF 〔实体内容〕
状 态 行=HTTP版本号 状态码 原因叙述
状态码表示响应类型
1×× 保留
2×× 表示请求成功地接收
3×× 为完成请求客户需进一步细化请求
4×× 客户错误
5×× 服务器错误
响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。
4.关闭连接
客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话
F. H.323 和TCP/IP 有什么关系啊 有SOCKET 能用的吗
H.323是1997年3月ITU-T(国际电联来电自信委员会)发布用于局域网上的视频会议标准协议,为那些与Internet和Intranet相连的视频会议系统提供了互通的标准。H.323总线型网络结构不会因为某一个终端出现临时故障而影响整个会议和网络。H.320主从星形汇接结构可能因为单点临时故障,而又没有重要节点上的容错备份机制导致许多网络会议出现运行不正常的现象。 H.323技术在网络上可以开发出许多与底层网络传输无关的多媒体应用,如多媒体视讯会议、多媒体监控、多媒体生产调度指挥、远程企业培训和教育、多媒体呼叫中心、网上IP电话、网上IP传真、网上视频点播和广播等,可以利用H.323 技术将多种应用和业务迭加到同一个传输网络平台上,电视会议仅仅是它的应用之一。
H.323是基于TCP/IP协议之上的,而IP协议具备多点广播功能IP Multicast(RFC1112)。从而在网上轻松实现多媒体广播业务,如视频广播。
G. 学习华为HCAN需要学习TCP/IP基础吗
我学路由命令时,用了三个月,基本命令能够使用.如绑定ARP,防火墙设定,更改IP地址,端口开专放等等...最好的老师属是自己动手.用模拟器效果不好,手边最好有一台硬件实操. 华为路由命令跟CISCO基本相同,所以以前曾被思科控告,后更改为华为单独式的命令,...
H. TCP/IP编程实现远程文件传输
这个嘛很简单在TCP/IP网络结构中,为了保证网络安全,网络人员往往需要在路由器上添加防火墙,禁止非法用户用FTP等安全危害较大的TCP/IP协议访问主机。而有时系统维护人员需要用ftp将一些文件从中心机房主机传到前端网点主机上,比如应用程序的替换升级。如果每次传输文件时都要打开防火墙,未免显得有些繁琐,要是在自己的应用程序中增加一个专门的文件传输模块,那将是十分愉快的事情。
UNIX网络程序设计一般都采用套接字(socket)系统调用。针对目前十分流行的客户/服务器模式,其程序编写步骤如下:
1.Socket系统调用
为了进行网络I/O,服务器和客户机两端的UNIX进程要做的第一件事是调用socket()系统调用,建立软插座,指明合适的通讯协议。格式为:
#include >sys/types.h>
#include >sys/socket.h>
int socket(int family,int type,int protocol)
其中:(1)family指明套节字族,其值包括:
AF_UNIX (UNIX内部协议族)
AF_INET (Iternet协议)
AF_NS (XeroxNs协议,TCP/IP编程取该值)
AF_IMPLINK (IMP链接层)
(2)type 指明套接字类型,取值有:
SOCK_STREAM (流套接字)
SOCK_DGRAM (数据报套接字)
SOCK_RAW (原始套接字)
SOCK_SEQPACKET (定序分组套接字)
一般情况下,前两个参数的组合就可以决定所使用的协议,这时第三个参数被置为0,如果第一个参数为AF_INET,第二个参数选SOCK_STREAM,则使用的协议为TCP;第二个参数选SOCK_DGRAM,则使用的协议为UDP;当第二个参数选SOCK_RAW时,使用的协议为IP。值得指出的是并不是所有的族和类型的组合都是合法的,具体请查阅相关资料。该系统调用若成功则返回一个类似文件描述符,成为套节字描述字,可以像文件描述符那样用read和write对其进行I/O操作。当一个进程使用完该软插座时,需用close(<描述符>)关闭(具体见后面内容)。
2.服务器端Bind系统调用
软插座创建时并没有与任何地址相关联,必须用bind()系统调用为其建立地址联系。其格式为:
#include <sys/types.h>
#include <sys/socket.h>
int bind(int socketfd,strUCt sockaddr_in *localaddr,sizeof(localaddr));
其中:(1)第一个参数socketfd是前步socket()系统调用返回的套节字描述符。
(2)第二个参数被捆向本地地址的一种结构,该结构在sys/netinet/in.h中定义:
struct sockaddr_in{
short sin_family;/*socket()系统调用的协议族如AF_INET*/
u_short sin_port;/*网络字节次序形式的端口号码*/
struct in_addr sin_addr;/*网络字节次序形式的网络地址*/
char sin_zero[8];
}
一台机器上的每个网络程序使用一个各自独立的端口号码,例如:telnet程序使用端口号23,而ftp文件传输程序使用端口号21。我们在设计应用程序时,端口号码可以由getservbyname()函数从/etc/services库文件中获取,也可以由htons (int portnum)函数将任意正整数转换为网络字节次序形式来得到,有些版本的UNIX操作系统则规定1024以下的端口号码只可被超级用户使用,普通用户程序使用的端口号码只限于1025到32767之间。网络地址可以由gethostbyname(char*hostname)函数得到(该函数和getservbyname()一样都以网络字节次序形式返回所有在他们结构中的数据),参数hostname为/etc/hosts文件中某一网络地址所对应的机器名。该函数返回一个类型为hostent的结构指针,hostent结构在netdb.h中定义:
struct hostent{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;/*地址长度*/
char **h_addr_list; #define h_addr h_addr_list[0];/*地址*/
}
(3)第三个参数为第二个结构参数的长度,如果调用成功,bind返回0,否则将返回-1并设置errno。
3.服务器端系统调用listen,使服务器愿意接受连接
格式:int listen(int socketfd,int backlong)
它通常在socket和bind调用后在accept调用前执行。第二个参数指明在等待服务器执行accept调用时系统可以排队多少个连接要求。此参数常指定为5,也是目前允许的最大值。
4.服务器调用accept,以等待客户机调用connect进行连接。格式如下:
int newsocket=(int socketfd,struct sockaddr_in *peer,int*addrlen);
该调用取得队列上的第一个连接请求并建立一个具有与sockfd相同特性的套节字。如果没有等待的连接请求,此调用阻塞调用者直到一连接请求到达。连接成功后,该调用将用对端的地址结构和地址长度填充参数peer和addlen,如果对客户端的地址信息不感兴趣,这两个参数用0代替。
5.客户端调用connect()与服务器建立连接。格式为:
connect(int socketfd,struct sockaddr_in *servsddr,int addrlen)
客户端取得套接字描述符后,用该调用建立与服务器的连接,参数socketfd为socket()系统调用返回的套节字描述符,第二和第三个参数是指向目的地址的结构及以字节计量的目的地址的长度(这里目的地址应为服务器地址)。调用成功返回0,否则将返回-1并设置errno。
6.通过软插座发送数据
一旦建立连接,就可以用系统调用read和write像普通文件那样向网络上发送和接受数据。Read接受三个参数:一个是套节字描述符;一个为数据将被填入的缓冲区,还有一个整数指明要读的字节数,它返回实际读入的字节数,出错时返回-1,遇到文件尾则返回0。Write也接受三个参数:一个是套节字描述符;一个为指向需要发送数据的缓冲区,还有一个整数指明要写入文件的字节个数,它返回实际写入的字节数,出错时返回-1。当然,也可以调用send和recv来对套节字进行读写,其调用与基本的read和write系统调用相似,只是多了一个发送方式参数。
7.退出程序时,应按正常方式关闭套节字。格式如下:
int close(socketfd)
前面介绍了UNIX客户/服务器模式网络编程的基本思路和步骤。值得指出的是socket编程所涉及的系统调用不属于基本系统调用范围,其函数原形在libsocket.a文件中,因此,在用cc命令对原程序进行编译时需要带-lsocket选项。
I. htcp协议是什么
用来发现HTTP缓冲区并储存数据,管理整套的HTTP缓冲区和监测缓冲区活动的协议.这是一个试验性协议,用来完成这些功能的几个建议中的其中的一个