图解HTTP权威指南(二)| 连接管理

一、两个问题 1、HTTP是如何使用TCP连接的 2、HTTP的连接,并行连接、keep-alive(持久连接)和管道化连接 二、TCP连接 1、什么是TCP TCP/IP是全球计算机及网络设备都在使用的一种常用的分组交换网络层协议分层协议集。客户端应用程序可以打开一条TCP/IP连接,连接到可能运 ... »

这些必会的计算机网络知识点你都掌握了吗

学习计算机网络必会的知识点,看看你是否全面掌握,如有帮到你,可以收藏点赞支持哦。 什么是网络协议,为什么要对网络协议分层 * 网络协议是计算机在通信过程中要遵循的一些约定好的规则。 网络分层的原因: 易于实现和维护,因为各层之间是独立的,层与层之间不会收到影响。 有利于标准化的制定 计算机网络的各层 ... »

解Bug之路-NAT引发的性能瓶颈

解Bug之路-NAT引发的性能瓶颈 笔者最近解决了一个非常曲折的问题,从抓包开始一路排查到不同内核版本间的细微差异,最后才完美解释了所有的现象。在这里将整个过程写成博文记录下来,希望能够对读者有所帮助。(篇幅可能会有点长,耐心看完,绝对物有所值~) 环境介绍 先来介绍一下出问题的环境吧,调用拓扑如下 ... »

TCP 队列溢出了

一、TCP 队列 1、syns queue:半连接队列 TCP 三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的 syn 消息后,将连接信息放入 syns queue,此时,双方连接尚未建立,称之为半连接。 2、accept queue:全连接队列 TCP 三次握手,第三 ... »

从Linux源码看TIME_WAIT状态的持续时间

从Linux源码看TIME_WAIT状态的持续时间 前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。所以,笔者就去Linux源码里面,一探究竟。 首先介绍 ... »

从Linux源码看Socket(TCP)的listen及连接队列

从Linux源码看Socket(TCP)的listen及连接队列 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就来从Linux源码的角度看下Server端的Socket在进行listen的时候到底做了哪些事情(基于Linux 3.10内核 ... »

通透,23 个问题 TCP 疑难杂症全解析

每个时代,都不会亏待会学习的人。 在进入今天主题之前我先抛几个问题,这篇文章一共提出 23 个问题。 TCP 握手一定是三次?TCP 挥手一定是四次? 为什么要有快速重传,超时重传不够用?为什么要有 SACK,为什么要有 D-SACK? 都知道有滑动窗口,那由于接收方的太忙了滑动窗口降为了 0 怎么 ... »

从Linux源码看Socket(TCP)的bind

从Linux源码看Socket(TCP)的bind 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就来从Linux源码的角度看下Server端的Socket在进行bind的时候到底做了哪些事情(基于Linux 3.10内核)。 一个最简单的 ... »

计算机网络中比较重要的一些概念

分层 OSI模型有哪几层? 应用层(数据):定义了应用进程间的通信和交互的规则,通过应用进程间的交互来完成特定网络应用。 表示层(数据):用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。 会话层(数据):负责建立、管理和终止表示层实体之间的通信会话。 传输层 ... »

client: c#+protobuf, server: golang+protobuf

前段时间看到一篇博文《可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)》,他是用C#实现的即时通讯系统,功能强大,界面漂亮。 就想用golang重写服务端,把代码下载回来,发现通信框架用的是ESFramework,我没用过也不知道ESFramework的协议,重写是不行的了,只 ... »

这次一定让你记住 TCP 三次握手、四手挥手!

TCP协议全称为:Transmission Control Protocol,是一种面向链接、保证数据传输安全、可靠的数据传输协议。为了确保数据的可靠传输,不仅需要对发出的每个字节进行编号确认,还需要验证每一个数据包的有效性。每个TCP数据包是封闭在IP包中的,每个一IP包的后面紧跟着的是TCP头, ... »

TCP-三次握手和四次挥手简单理解

TCP-三次握手和四次挥手简单理解 背景:TCP,即传输控制协议,是一种面向连接的可靠的,基于字节流的传输层协议。作用是在不可靠的互联网络上提供一个可靠的端到端的字节流服务,为了准确无误的将数据送达目的地,TCP协议采纳三次握手策略。 一、TCP报文 TCP报文格式图: 上图中的几个字段需要重点介绍 ... »

当输入一个 URL,实际会发生什么?

从一个经典的面试题说起 从输入URL到页面展现的过程: 输入URL后,会先进行域名解析。优先查找本地host文件有无对应的IP地址,没有的话去本地DNS服务器查找,还不行的话,本地DNS服务器会去找根DNS服务器要一个域服务器的地址进行查询,域服务器将要查询的域名的解析服务器地址返回给本地DNS,本 ... »

上位机面试必备——TCP通信灵魂二十问【上】

关注公众号获取更多干货 TCP通信协议应该是上位机开发中应用最广泛的协议,无论是西门子S7协议、三菱MC协议或者是欧姆龙的Fins-TCP协议等,都是TCP通信协议的典型应用。很多人在上位机面试时,都会被问到关于TCP通信的一些问题,比如三次握手和四次挥手、TCP与Socket之间的联系等,为了便于 ... »

说说TCP的三次握手和四次挥手

一、传输控制协议TCP简介 1.1 简介 TCP(Transmission Control Protocol) 传输控制协议,是一种 面向连接的、可靠的、基于字节流的传输层 通信协议。 TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一 ... »

Linux上TCP的几个内核参数调优

Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。 调优清单 好了,在这里先列出调优清单。请记住,这里只是笔者在内网进行TCP内核参数调优的 ... »

TCP 粘包拆包

一、什么是粘包拆包? 粘包拆包是TCP协议传输中一种现象概念。TCP是传输层协议,他传输的是“流”式数据,TCP并不知道传输是哪种业务数据,或者说,并不关心。它只是根据缓冲区状况将数据进行包划分,然后进行传输。 在这个前提下,就有可能发生发生同一个业务数据被分割程多个数据包,或者多个业务数据被打包到 ... »

详说tcp粘包和半包

tcp服务端和客户端建立连接后会长时间维持这个连接,用于互相传递数据,tcp是以流的方式传输数据的,就像一个水管里的水一样,从一头不断的流向另一头。 理想情况下,发送的数据包都是独立的, 现实要复杂一些,发送方和接收方都有各自的缓冲区。 发送缓冲区:应用不断的把数据发送到缓冲区,系统不断的从缓冲区取 ... »