tcp

31.1.http基础知识简介

瘦欲@ 提交于 2020-04-02 12:11:37
TCP/IP协议 跨网络的主机间通讯 在建立通信连接的每一端,进程间的传输要有两个标志: IP地址和端口号,合称为套接字地址 socket address 客户机套接字地址定义了一个唯一的客户进程 服务器套接字地址定义了一个唯一的服务器进程 SOCKET套接字 Socket:套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换,SocketAPI出现于1983年,4.2 BSD实现 Socket API:封装了内核中所提供的socket通信相关的系统调用 Socket Domain:根据其所使用的地址 AF_INET:Address Family,IPv4 AF_INET6:IPv6 AF_UNIX:同一主机上不同进程之间通信时使用 Socket Type:根据使用的传输层协议 SOCK_STREAM:流,tcp套接字,可靠地传递、面向连接 SOCK_DGRAM:数据报,udp套接字,不可靠地传递、无连接 SOCK_RAW: 裸套接字,无须tcp或udp,APP直接通过IP包通信 客户/服务器程序的套接字函数 套接字相关的系统调用: socket(): 创建一个套接字 bind(): 绑定IP和端口 listen(): 监听 accept(): 接收请求 connect(): 请求连接建立 write(): 发送 read(): 接收

\"SQL Server不存在或访问被拒绝\"问题的解决

落爺英雄遲暮 提交于 2020-04-02 07:36:15
最近做一个项目(Asp.net+Sql Server 2000),在原来开发的机器上运行没有任何问题.但当我在另外一台机器上调试程序(本机调试)的时候,总出现“SQL Server不存在或访问被拒绝”。相信在任何一个搜索网站输入这样的检索词,一定会获得n多的页面。 总结起来的关于SQL Server连接中此类四个最常见错误错误解决方案如下: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= ping <服务器IP地址/服务器名称> 如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等. 还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server.防火墙软件可能会屏蔽对 ping,telnet 等的响应 因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口. 如果ping <服务器IP地址> 成功而,ping <服务器名称> 失败

TCP协议的三次握手和四次挥手

谁说胖子不能爱 提交于 2020-04-02 05:19:36
             TCP协议的三次握手和四次挥手 我们知道,TCP是主机对主机层的传输控制协议,提供可靠的连接服务,需要三次握手建立连接,而终止一个连接要经过四次挥手。 三次握手 第一次握手:客户端申请连接(SYN=1),发送seq=x的数据包,等待服务器确认。 第二次握手:服务器端申请连接(SYN=1),确认收到客户端的申请(ACK=1).;服务器期望下次收到x+1数据包(ack=x+1),发送seq=y的数据包。 第三次握手:客户端确认收到请求(SYN=1),发送服务器期望的数据包(y+1),完成连接。 四次挥手 第一次挥手:客户端请求断开连接(FIN=1),发送数据(seq=u)。 第二次挥手:确认收到请求(ACK=1),期望收到数据包(ack=u+1),发送数据(seq=v)。 第三次挥手:服务器申请断开连接(FIN=1),确认收到你之前的请求(ACK=1);期望收到数据(ack=u+1),发送数据(seq=w)。 第四次挥手:确认收到请求(ACK=1),发送数据(seq=u+1),断开连接。 为什么需要三次握手?    如果不采用“三次握手”,那么只要服务器发出确认,新的连接就建立了。由于现在客户端并没有发出建立连接的请求,因此不会理睬服务器的确认,也不会向服务器发送ACK包,但是服务端确认为新的连接开始了,等待客户端发数据,这样就会白白浪费资源。而经过三次握手

nginx 源码学习笔记(十八)—— ngx_add_inherited_sockets 继承的sockets

依然范特西╮ 提交于 2020-04-01 20:25:43
之前几节有讲过多进程的创建过程和子进程所处理的事情,今天要讲一下nginx里面main函数的另一个主要的操作ngx_add_inherited_sockets。 ngx_add_inherited_sockets:服务器监听套接字的封装。 本文的主要灵感来自: http://blog.csdn.net/livelylittlefish/article/details/7277607 ,感谢作者分享。 在ngx_add_inherited_sockets方法内,有一个重要的结构体需要讲解——ngx_listening_s src/core/ngx_connection.h typedef struct ngx_listening_s ngx_listening_t; struct ngx_listening_s { ngx_socket_t fd; //文件描述符 struct sockaddr *sockaddr; //socket地址 socklen_t socklen; //地址长度 size_t addr_text_max_len; ngx_str_t addr_text; //最终存放socket地址,之前的sockaddr主要存放没转换前的数据,之后会讲解 int type; int backlog; int rcvbuf; //接受缓冲区大小 int sndbuf; /

【Peer-to-Peer Sockets 工程入门】

大兔子大兔子 提交于 2020-04-01 14:07:50
Peer-to-Peer (P2P)Sockets工程在JXTA peer-to-peer虚拟网络重新实现了对应于标准TCP/IP网络中的Java标准的Socket,ServerSocket,和InetAddress等类。该工程同时还引入了一些注入Jetty web server,Apache XML-RPC客户端和服务器库,Apache Jasper JSP引擎之类的流行web package。使这些服务可以运行在Peer-to-Peer Sockets 的框架下。      在这片文章结束的时候,你会理解对P2P Sockets packages的需求和以及开发它的动机,学会怎么配置P2P Socket 库使之在你的系统上能够运行,学会怎么样建立P2P的服务器和客户端Socket,怎么使用P2P的InetAddress 类,还包括框架下的安全问题以及它的局限性。       动机      P2P Socket工程的设计的使用对象是对以下几个领域有兴趣的开发者:      ●将Internet回归到end-to-end的原则当中      ●一种绕过ICANN和Verisign的替代peer-to-peer域名系统,这个系统是完全分布式的,对更新拥有比标准DNS快的多的响应速度。      ●一种任何人都可以建立活着使用网络服务的Internet

网络

删除回忆录丶 提交于 2020-04-01 13:09:13
OSI 的七层模型 应用层 :网络服务与最终用户的一个接口。HTTP、FTP、RPC 表示层: 数据的表示、安全、压缩。 会话层: 建立、管理、终止会话。 传输层: 定义传输数据的协议端口号,以及流控和差错校验。TCP、UDP 网络层: 进行逻辑地址寻址,实现不同网络之间的路径选择。IP 数据链路层: 建立逻辑连接、进行 硬件地址 寻址、差错校验等功能。MAC 物理层: 建立、维护、断开物理连接。bit流 TCP和UDP UDP在传输数据时不需要建立连接,远程的主机在接收到 UDP报文 之后不需要给出确认。 虽然提供的是不可靠交付,但是在某些情况下是一种有效的工作方式(一般用于即时通信),比如QQ语音,QQ音频,直播等等。UDP支持一对一,一对多,多对一和多对多的交互通信。 TCP在传输数据之前需要先建立连接,数据传输结束后需要释放连接。并且,不提供广播或者多播。由于TCP需要提供可靠的,面向连接的传输服务,所以会增加开销,如,确认、流量控制、计时器以及连接管理等。TCP一般用于文件的传输、发送和邮件的收发、远程登录等。 TCP特点: TCP通过检验 序列号,确认应答, 重发控制 ,连接管理以及窗口控制等机制实现可靠性传输。 通过序列号与确认应答提高可靠性(传输): TCP通过肯定的确认应答ACK实现可靠的 数据传输 。当发生端将数据发送出去之后会等待对端 的确认应答

wireshark常用过滤条件

别来无恙 提交于 2020-04-01 12:52:30
抓取指定IP地址的数据流: 如果你的抓包环境下有很多主机正在通讯,可以考虑使用所观察主机的IP地址来进行过滤。以下为IP地址抓包过滤示例: host 10.3.1.1:抓取发到/来自10.3.1.1的数据流 host 2406:da00:ff00::6b16:f02d:抓取发到/来自IPv6地址2406:da00:ff00::6b16:f02d的数据流 not host 10.3.1.1:抓取除了发到/来自10.3.1.1以外的所有数据流 src host 10.3.1.1:抓取来自10.3.1.1的数据流 dst host 10.3.1.1:抓取发到10.3.1.1的数据流 host 10.3.1.1 or 10.3.1.2:抓取发到/来自10.3.1.1,以及与之通讯的所有数据流,与10.3.1.2,以及与之通讯的所有数据流 host www.espn.com:抓取发到/来自所有解析为www.espn.com的IP地址的数据流 ip.addr == 10.2.2.2 抓取指定IP地址范围的数据流: 当你需要抓取来自/发到一组地址的数据流,可以采用CIDR(无类别域间路由,Classless Interdomain Routing)格式或使用mask参数。 net 10.3.0.0/16:抓取网络10.3.0.0上发到/来自所有主机的数据流(16表示长度) net 10.3.0

网络基础:socket模块

﹥>﹥吖頭↗ 提交于 2020-04-01 05:36:21
socket:   套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 基于TCP协议的socket:tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 socket参数详解: socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 创建socket对象的参数说明: family 地址系列应为AF_INET(默认值),AF_INET6,AF_UNIX,AF_CAN或AF_RDS。 (AF_UNIX 域实际上是使用本地 socket 文件来通信) type 套接字类型应为SOCK_STREAM(默认值),SOCK_DGRAM,SOCK_RAW或其他SOCK_常量之一。 SOCK_STREAM 是基于TCP的,有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料传送。 SOCK_DGRAM 是基于UDP的,无保障的面向消息的socket,多用于在网络上发广播信息。 proto 协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAW或CAN_BCM之一。 fileno

用Python开发Zeroc Ice应用

独自空忆成欢 提交于 2020-04-01 03:24:34
Zeroc Ice简介   Zeroc ICE(Internet Communications Engine ,互联网通信引擎)是目前功能比较强大和完善的RPC框架,支持跨平台、跨语言调用。它非常灵活,可以通过TCP、UDP、SSL/TSL或WebSocket连接,支持同步、异步调用,以及服务器和客户端之间的双向连接。Zeroc ICE的效率非常高,它使用一种高效的二进制协议,对带宽的消耗比较小。甚至对于通过卫星的RPC调用,Zeroc ICE还可以对数据流进一步压缩。另外Zeroc ICE还可以在不解包的情况下转发调用请求,省去普通转发时的解包、重新压包的时间。   Zeroc ICE的应用还可以部署在icegrid上,实现网格计算,即客户端调用时不必指定目标主机,由ICE负责查找;服务端也可以在调用时才开启,动态加载;同样的服务也可以部署多个,实现高可用。 实验简介   Zeroc ICE支持跨语言RPC调用,包括C++、C#、Java、JavaScript、Python、Objective-C、Ruby、PHP、VB等。本次实验采用Python(Pyhon 2.7以上,或者Python 3都可以)。实验的内容是在icegrid上部署一个简单的服务器,当客户端调用时输出指定内容,并返回一个字符串。实验步骤如下: 安装Zeroc ICE 开发服务端和客户端程序

RabbitMQ消息队列(一): Detailed Introduction 详细介绍

≯℡__Kan透↙ 提交于 2020-04-01 03:21:06
原文地址:https://blog.csdn.net/anzhsoft/article/details/19563091 1 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco 、Redhat、iMatix 等联合制定了 AMQP 的公开标准。 RabbitMQ是由RabbitMQ Technologies Ltd开发并且提供商业支持的。该公司在2010年4月被SpringSource(VMWare的一个部门)收购。在2013年5月被并入Pivotal。其实VMWare,Pivotal和EMC本质上是一家的。不同的是VMWare是独立上市子公司,而Pivotal是整合了EMC的某些资源,现在并没有上市。 RabbitMQ的官网是http://www.rabbitmq.com 2 应用场景 言归正传。RabbitMQ,或者说AMQP解决了什么问题,或者说它的应用场景是什么? 对于一个大型的软件系统来说