三次握手

简单理解Socket

女生的网名这么多〃 提交于 2020-01-23 13:22:58
感谢:http://www.cnblogs.com/dolphinX/p/3460545.html 转自百度经验:http://jingyan.baidu.com/article/08b6a591e07ecc14a80922f1.html 网络由下往上分为   物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。   通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,   三者从本质上来说没有可比性,   socket则是对TCP/IP协议的封装和应用(程序员层面上)。   也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,   而HTTP是应用层协议,主要解决如何包装数据。   关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:   “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。   如果想要使传输的数据有意义,则必须使用到应用层协议。   应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。   WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”   而我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装

反向代理和负载均衡有何区别?

柔情痞子 提交于 2020-01-22 19:00:22
作者:不吃猫的鱼 链接:https://www.zhihu.com/question/20553431/answer/130698230 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一、SLB产生背景: SLB(服务器负载均衡):在多个提供相同服务的服务器的情况下,负载均衡设备存在 虚拟服务IP地址 。当大量客户端从外部访问虚拟服务IP地址时,负载均衡设备将这些报文请求根据负载均衡算法,将流量均衡的分配给后台服务器以平衡各个服务器的负载压力,避免在还有服务器压力较小情况下其他服务达到性能临界点出现运行缓慢甚至宕机情况,从而提高服务效率和质量。因此对客户端而言,RS(real server 实际服务器)的IP地址即是负载均衡设备VIP(虚拟服务地址IP)地址,真正的RS服务器IP地址对于客户端是不可见的。 二、SLB的三种传输模式: 七层SLB和四层SLB的区别: 四层SLB:配置负载均衡设备上服务类型为tcp/udp,负载均衡设备将只解析到4层,负载均衡设备与client三次握手之后就会和RS建立连接; 七层SLB:配置负载均衡设备服务类型为http/ftp/https等,负载均衡设备将解析报文到7层,在负载均衡设备与client三次握手之后,只有收到对应七层报文,才会跟RS建立连接。 在负载均衡设备中,SLB主要工作在以下的三种传输模式中:

了解HTTP协议

给你一囗甜甜゛ 提交于 2020-01-22 18:22:57
目录 一、什么是HTTP协议 WEB与HTTP HTTP发展历史 二、TCP/IP协议 TCP/IP协议分层简介 应用层——HTTP、FTP、SMTP 传输层——TCP/UDP 网络层——IP协议、ARP协议、路由协议 数据链路层——网卡 三、HTTP数据包的封装过程 四、HTTP数据传输过程 五、DNS域名解析 一、什么是HTTP协议 HTTP(Hyper Text Transfer Protocol)<超文本传输协议>的缩写,是用于 从WEB服务器传输超文本到客户端浏览器 的传输协议。HTTP是一个应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型。 WEB与HTTP WEB是一种 基于超文本(HTML)和HTTP的 ,全球性的,动态交互的,跨平台的分布式 图形信息系统 。 WEB浏览器的访问操作图示: HTTP发展历史 二、TCP/IP协议 TCP/IP(Transmission Control Protocol/Internet Protocol, 传输控制协议/网际协议 )是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由 FTP 、 SMTP 、TCP、 UDP 、IP 等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。——百度百科

tcp短连接和长连接

时光怂恿深爱的人放手 提交于 2020-01-22 13:41:24
1. TCP 连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的 经典的三次握手示意图: 经典的四次握手关闭图: 2. TCP 短连接 我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作 短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段 3.TCP 长连接 接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。 首先说一下TCP/IP详解上讲到的TCP保活功能

HTTP长连接与短连接

流过昼夜 提交于 2020-01-22 13:23:48
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 2. 如何理解HTTP协议是无状态的 HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。 3. 什么是长连接、短连接? 在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。 但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码: Connection:keep-alive

HTTP长连接和短连接

喜夏-厌秋 提交于 2020-01-22 13:23:20
1. HTTP协议与TCP/IP协议的关系   HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 2. 如何理解HTTP协议是无状态的   HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。 3. 什么是长连接、短连接?    在HTTP/1.0中,默认使用的是短连接 。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。 但从 HTTP/1.1起,默认使用长连接 ,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码: Connection

针对TCP连接异常断开的分析

被刻印的时光 ゝ 提交于 2020-01-22 11:03:35
我们知道,一个基于TCP/IP的客户端-服务器的程序中,正常情况下,我会是启动服务器使其在一个端口上监听请求,等待客户端的连接;通过TCP的三次握手,客户端能够通过socket建立一个到服务器的连接;然后,两者就可以基于这个socket连接通信了。连接结束后,客户端(进程)会退出;在不需要继续处理客户请求的情况下,服务器(进程)也将退出。而且,当一个进程退出的时候,内核会关闭所有由这个进程打开的套接字,这里将触发TCP的四次挥手进而关闭一个socket连接。但是,在一些异常的情况下,譬如:服务器进程终止、服务器主机奔溃/奔溃后重启、服务器关机的情况下,客户端向服务器发起请求的时候,将会发生什么呢?下边,我们来看看这几种情况。 注意:一下描述的各种情况所使用的示例程序在文章的最后贴出 一、服务器进程终止 我们启动客户/服务器对,然后杀死子进程(模拟服务器进程崩溃的情形,我们可从中查看客户端将发生什么)。 1:在同一个主机上启动服务器和客户,并在客户上输入一行文本,以验证一切正常。正常情况下,改行文本将由服务器回射给客户。 2:找到服务器子进程的ID,通过kill命令杀死它。作为进程终止处理的部分工作,子进程中所有打开着的描述字都被关闭。这就导致向客户发送一个FIN,而客户TCP则响应以一个ACK。这就是TCP连接终止的前一半工作。 3:子进程终止时

nignx优化

本秂侑毒 提交于 2020-01-21 09:37:29
http错误代码 200:一切正常 401:用户名或密码错误 403:禁止访问 404:文件不存在 500:服务器内部错误 自定义报错页面(404) vim /usr/local/nginx/conf/nginx.conf .. .. charset utf-8 ; #仅在需要中文时修改该选项 error_page 404 /404.html ; #自定义错误页面 .. .. yum list | grep google | grep chinese #中文包 查看服务器状态信息 编译安装时使用–with-http_stub_status_module开启状态页面模块 1)语法格式: … … location /status { stub_status on ; #allow IP地址; #deny IP地址; } … … 2)使用方法 访问服务器下的/status页面: Active connections: 1 server accepts handled requests 10 10 30 Reading: 0 Writing: 1 Waiting: 0 //Active connections:当前活动的连接数量。 Accepts:已经接受客户端的连接总数量。 Handled:已经处理客户端的连接总数量。(一般与accepts一致,除非服务器限制了连接数量)。

UNP——第四章,TCP套接字编程

主宰稳场 提交于 2020-01-20 23:48:50
1.socket 函数   family AF_INET IPv4 AF_INET6 IPv6 AF_LOCAL Unix域 AF_ROUTE 路由套接字 AF_KEY 密钥套接字   type SOCK_STREAM 字节流 SOCK_DGRAM 数据报 SOCK_SEQPACKET 有序分组 SOCK_RAW 原始套接字   AF_INET 和 AF_INET6 的 protocol IPPROTO_TCP IPPROTO_UDP IPPROTO_SCTP (2)AF_xxx 和 PF_xxx   AF_ 表示地址族,PF_xxx 表示协议族,但实际上 AF_ 和 PF_ 相同。 2.connect   connect 指定 目标套接字,   connect 调用时,TCP 发送 SYN   TCP接收到 ACK时,connect 返回。   connect 前,可以不bind,内核会在connect 时随机分配原套接字。   connect 开始时,TCP从 CLOSED --> SYN_SEND,成功时, SYN_SEND --> ESTABLISH   每次 connect 失败后,都必须 close 套接字,并重新调用 socket。 3.bind   设置源套接字地址,   可以指定也可以不指定,不指定内核会分配,   设置为0则为不指定,   指定任意IP时

DNS分别在什么情况下使用UDP和TCP

限于喜欢 提交于 2020-01-20 11:48:46
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。 如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。其实当解析器发出一个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就能用更多的segment来传送任意长度的数据。 另外一种情况是,当一个域的辅助域名服务器启动时,将从该域的主域名服务器primary DNS server执行区域传送。除此之外,辅域名服务器也会定时(一般时3小时)向PDS进行查询以便了解SOA的数据是否有变动。如有变动,也会执行一次区域传送。区域传送将使用TCP而不是UDP,因为传送的数据量比一个request或response多得多。 DNS主要还是使用UDP,解析器还是服务端都必须自己处理重传和超时。DNS往往需要跨越广域网或互联网,分组丢失率和往返时间的不确定性要更大些,这对于DNS客户端来说是个考验