从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是以流的方式传输数据的,就像一个水管里的水一样,从一头不断的流向另一头。 理想情况下,发送的数据包都是独立的, 现实要复杂一些,发送方和接收方都有各自的缓冲区。 发送缓冲区:应用不断的把数据发送到缓冲区,系统不断的从缓冲区取 ... »

TCP 重置攻击的工作原理

原文链接:https://fuckcloudnative.io/posts/deploy-k3s-cross-public-cloud/ TCP 重置攻击 是使用一个单一的数据包来执行的,只有几个字节大小。攻击者制作并发送一个伪造的 TCP 重置包来干扰用户和网站的连接,欺骗通信双方终止 TCP 连 ... »

从linux源码看socket(tcp)的timeout

从linux源码看socket(tcp)的timeout 前言 网络编程中超时时间是一个重要但又容易被忽略的问题,对其的设置需要仔细斟酌。在经历了数次物理机宕机之后,笔者详细的考察了在网络编程(tcp)中的各种超时设置,于是就有了本篇博文。本文大部分讨论的是socket设置为block的情况,即se ... »

从linux源码看epoll

从linux源码看epoll 前言 在linux的高性能网络编程中,绕不开的就是epoll。和select、poll等系统调用相比,epoll在需要监视大量文件描述符并且其中只有少数活跃的时候,表现出无可比拟的优势。epoll能让内核记住所关注的描述符,并在对应的描述符事件就绪的时候,在epoll的 ... »

【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手

【摘要】本文重点分析计算机网络中TCP协议中的握手和挥手的过程。 【前提说明】 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需要复习一下网络知识,于是就有这篇博文的诞生。当然网上关于TCP相关的知识点也是芸芸,闲着无事也可以多 ... »