tcp

Why tcp connect termination need 4-way-handshake?

两盒软妹~` 提交于 2020-04-10 06:58:05
问题 When connection sets up, there is: Client ------SYN-----> Server Client <---ACK/SYN---- Server ----① Client ------ACK-----> Server and when termination comes, there is: Client ------FIN-----> Server Client <-----ACK------ Server ----② Client <-----FIN------ Server ----③ Client ------ACK-----> Server my question is why ② and ③ can not set in the same package like ① which is ACK and SYN set in one package ??? 回答1: In the Three-Way Handshake ( connection setup ) : The server must acknowledge (

TCP/IP协议的认识

人盡茶涼 提交于 2020-04-08 11:47:00
TCP/IP协议的认识 一、简介 TCP/IP协议是一个协议集合。大家叫的时候方便说,所以统称为TCP/IP。 HTTP协议就属于TCP/IP协议家族中的一员,了解HTTP协议在整个网络流程中的地位,也能更加充分的理解HTTP协议。 TCP/IP协议族中有一个重要的概念是分层,TCP/IP协议按照层次分为四层:应用层、传输层、网络层、数据链路层。 二、与HTTP 关系密切的协议 : IP、TCP 和 DNS 1、IP协议: IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。 2、TCP协议 如果说IP协议是找到对方的详细地址。那么TCP协议就是安全地把东西带给对方。各有分工,互不冲突。 TCP属于传输层,提供可靠的字节流服务,为了确保信息能够确保准确无误的到达,TCP采用了著名的三次握手策略(three-way handshaking) 3、DNS DNS(Domain names System) 和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。 下面是我们访问一个网页,各种协议在里面起的作用: 参考链接:https://www.cnblogs.com/roverliang/p/5176456.html 来源: https://www.cnblogs

wireshark

断了今生、忘了曾经 提交于 2020-04-08 04:00:39
1.Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 能获取HTTP,也能获取HTTPS,但不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark。 2.窗口介绍         1)DISPLAY FILTER(显示过滤器)   显示过滤器用于查找捕捉记录中的内容。   使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。   过滤器有两种,一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。   在Capture -> Capture Filters 中设置保存过滤在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",Filter栏上就多了个"Filter 102" 的按钮。   2)PACKET LIST PANE

TCP漫谈之keepalive和time_wait

此生再无相见时 提交于 2020-04-08 00:29:42
TCP是一个有状态通讯协议,所谓的有状态是指通信过程中通信的双方各自维护连接的状态。 一、TCP keepalive 先简单回顾一下TCP连接建立和断开的整个过程。(这里主要考虑主流程,关于丢包、拥塞、窗口、失败重试等情况后面详细讨论。) 首先是客户端发送syn(Synchronize Sequence Numbers:同步序列编号)包给服务端,告诉服务端我要连接你,syn包里面主要携带了客户端的seq序列号;服务端回发一个syn+ack,其中syn包和客户端原理类似,只不过携带的是服务端的seq序列号,ack包则是确认客户端允许连接;最后客户端再次发送一个ack确认接收到服务端的syn包。这样客户端和服务端就可以建立连接了。整个流程称为三次握手。 建立连接后,客户端或者服务端便可以通过已建立的socket连接发送数据,对端接收数据后,便可以通过ack确认已经收到数据。 数据交换完毕后,通常是客户端便可以发送FIN包,告诉另一端我要断开了;另一端先通过ack确认收到FIN包,然后发送FIN包告诉客户端我也关闭了;最后客户端回应ack确认连接终止。整个流程成为四次挥手。 TCP的性能经常为大家所诟病,除了TCP+IP额外的header以外,它建立连接需要三次握手,关闭连接需要四次挥手。如果只是发送很少的数据,那么传输的有效数据是非常少的。 是不是建立一次连接后续可以继续复用呢

abc

旧城冷巷雨未停 提交于 2020-04-08 00:09:10
lwk@qwfys:/data/docker/nginx$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7632c172edd6 nginx:1.17.9 "nginx -g 'daemon of…" 15 minutes ago Up About a minute 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx 149bd454b87d nacos/nacos-server:1.1.4 "bin/docker-startup.…" 3 weeks ago Up 3 days 0.0.0.0:8848->8848/tcp nacos 909634735b0d mysql:5.7.28 "docker-entrypoint.s…" 3 weeks ago Up 3 days 0.0.0.0:3306->3306/tcp, 33060/tcp mysql lwk@qwfys:/data/docker/nginx$ docker restart nginx nginx lwk@qwfys:/data/docker/nginx$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

TCP的慢启动和拥塞避免

◇◆丶佛笑我妖孽 提交于 2020-04-07 21:39:56
TCP为了保证数据的完整性采用了许许多多的方法,像启用重传定时器、坚持定时器,通过最大路径发现获取到链路中允许通过的最大数据包大小,还有一些其它的如慢启动、拥塞避免、快速重传等等。 慢启动: 一般通信时,发送方一开始便向网络发送多个报文段,直至达到接收方通告的窗口大小为止。当发送方和接收方处于同一个局域网时,这种方式是可以的。但是如果在发送方和接收方之间存在多个路由器和速率较慢的链路时,就有可能出现一些问题。一些中间路由器必须缓存分组,并有可能耗尽存储器的空间。 慢启动算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作 。 慢启动为发送方的 T C P 增加了另一个窗口:拥塞窗口 (congestion window) ,记为 c w n d 。当 与另一个网络的主机建立 T C P 连接时,拥塞窗口被初始化为 1 个报文段(即另一端通告的报文段大小) 。每收到一个 A C K ,拥塞窗口就增加一个报文段( c w n d 以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。 在时间 0 ,发送方发送了一个报文段。由于发送方处于慢启动中(其拥塞窗口为 1 个报文段),因此在继续发送以前它必须等待该数据段的确认。 在时间 1, 2 和 3

Tcp面试相关

丶灬走出姿态 提交于 2020-04-07 21:26:25
https://mp.weixin.qq.com/s/ZWtXXUtDy7-mHflOFF03iQ 这里总结的很好,补充一下: MTU(Maximum Transmission Unit)最大传输单元,在TCP/IP协议族中,指的是IP数据报能经过一个物理网络的最大报文长度,其中包括了IP首部(从20个字节到60个字节不等),一般以太网的MTU设为1500字节,加上以太帧首部的长度14字节,也就是一个以太帧不会超过1500+14 = 1514字节。 如上图所示,MTU指的都是一个物理网络之中的。在以太网中,如果上层协议交给IP协议的内容实在是太多,使得一个以太帧超过了1514字节,那么IP报文就必须要分片传输,到达目的主机或目的路由器之后由其重组分片。 MSS MSS(Maximum Segment Size,最大报文段大小,指的是TCP报文(一种IP协议的上层协议)的最大数据报长度,其中不包括TCP首部长度。MSS由TCP链接的过程中由双方协商得出,其中SYN字段中的选项部分包括了这个信息。如果MSS+TCP首部+IP首部大于MTU,那么IP报文就会存在分片,如果小于,那么就可以不需要分片正常发送。 一般来说,MSS = MTU - IP首部大小 - TCP首部大小 MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”

[转帖]Kubernetes之Service

爱⌒轻易说出口 提交于 2020-04-07 21:17:20
Kubernetes之Service https://blog.lecury.cn/2016/06/20/Kubernetes之Service/ 在Kubernetes中Pod是终将消失的,从创建到销毁的过程中,它们是无法自动重启的。而ReplicationController可以用来动态的创建和销毁Pod(比如说在进行滚动升级的时候,可以进行扩展和收缩)。每一个Pod都得到一个属于自己的IP,但这些IP不能一直有效存在,因为这些IP随着Pod的销毁而变得没有了意义。那么这就导致了一个问题,如果一些Pods为集群内部的其他Pods(我们称它们为前端)提供服务,那么这些前端怎么发现、追踪这些后端集合中的服务呢?Service就是做这个事情的。 Service是一个抽象概念,它定义了一些逻辑上的Pods集合,并且定义了访问这些Pods集合的策略,也被称作为micro-service。Service通常通过Label标签选择器来对应相应的Pods集合(也有一些没有标签选择器的,请看下文介绍)。 举个例子,考虑一个运行的镜像,它在集群中有三个副本,这些副本是可以相互替代的,前端并不关心它现在与哪个后端服务打交道。实际上Pods组成的后端服务集合可以是变化的,比如说通过scale进行副本增加或者副本减少,但我们的前端不应该关心或者跟踪后端服务的变化,Service这一层抽象可以做到这一点。

网络编程

限于喜欢 提交于 2020-04-07 21:16:35
一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好。但是如果这两个程序之间想要传递一个数据,你要怎么做呢? 这个问题以你现在的知识就可以解决了,我们可以创建一个文件,把a.py想要传递的内容写到文件中,然后b.py从这个文件中读取内容就可以了。 但是当你的a.py和b.py分别在不同电脑上的时候,你要怎么办呢? 类似的机制有计算机网盘,qq等等。我们可以在我们的电脑上和别人聊天,可以在自己的电脑上向网盘中上传、下载内容。这些都是两个程序在通信。 回到顶部 二.软件开发的架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~ 1.C/S架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2.B/S架构 B/S即:Browser与Server

go语言系列-TCP编程

早过忘川 提交于 2020-04-07 21:14:59
TCP编程 Go的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端,程序必不可少也是至关重要的一部分 网络编程基本介绍 网络编程有两种 TCP socket编程,是网络编程的主流。之所以叫Tcp socket 编程,是因为底层基于Tcp/ip协议的。比如:QQ聊天 b/s结构的http编程,使用浏览器去访问服务器时,使用的就是http协议,而http底层依旧是用tcp socket实现的。比如:京东商城【属于go web开发范畴】 计算机间要相互通讯,必须要是用网线、网卡或者无线网卡 协议(tcp/ip) TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的 OSI与TCP/IP参考模型 书籍推荐《tcp/ip协议3卷》 IP地址 每个internet上的主机和路由器都有一个ip地址,它包括网络号和主机号,ip地址有ipv4(32位)或者ipv6(128位)可以ipconfig查看 端口(port)-介绍 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口