TCP/TP协议栈(逐渐更新版)
TCP/IP协议栈
应用层
DNS协议
传输层
TCP协议
TCP协议报文结构
- 源端口
- 目的端口
- 序列号
- 确认号
- 头长度
header length or data offset - 保留字段
reserved - 状态字段
- URG
- ACK
- PSH
- RST
- SYN
- FIN
- 窗口字段
- 校验和
- 紧急指针
- 可选字段
- 数据

TCP协议三次握手
TCP三次握手是一个老生常谈的问题。为了方便理解,我们首先来模拟A基地和B基地通信的问题,核心的问题是A基地和B基地如何确认双方的发送和接收能力。
首先,我们要去掉上帝视角、沉浸进去扮演一个角色。我们是A基地,现在我们想和B基地建立通信,首先我们给B基地发一个“hello”,等待B基地的回复。这时候B基地在收到我们的信息之后,回发一个“我收到了你的信息”。我们A基地收到B基地的回复“我收到了你的信息”之后,我们就能知道B基地的接收和发送能力都没有问题。但是站在B基地的视角,B基地不知道我们是否收到这条回发消息,所以此时B基地出于安全考虑就不会发消息,因为他们无法确定我们A基地是否有接收能力,B基地只能够知道A基地有发送能力。所以需要我们再发一次“我们收到了你的回复”信息给B基地。B基地在收到我们的回发消息就能够确认我们A基地收到了回复,这样B基地就能够知道我们的接收能力也没有问题。此时才能够安全通信。所以我们总结一下,其实TCP三次握手就是为了确定两者都具有发送和接收的能力。所以发包总共三次,确认总共两次。
值得一提的是,TCP连接发起是由客户端发起的,并不能由服务端发起。

所以我们来分析一下上图的三次握手,
- 客户端发送
SYN包,生成随机序列号seq = x; - 服务端发送
SYN, ACK包,生成随机序列号seq = y,对上一次的确认ack = x + 1; - 客户端发送
ACK包,生成上一次确认号ack = y + 1。
TCP协议四次挥手
UDP协议
TCP/TP协议栈(逐渐更新版)的更多相关文章
- 计算机网络基础之TCP/IP 协议栈
计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission C ...
- TCP/IP协议栈在Linux内核中的运行时序分析
网络程序设计调研报告 TCP/IP协议栈在Linux内核中的运行时序分析 姓名:柴浩宇 学号:SA20225105 班级:软设1班 2021年1月 调研要求 在深入理解Linux内核任务调度(中断处理 ...
- 【转】TCP/IP协议栈及OSI参考模型详解
OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设 ...
- C1000k 新思路:用户态 TCP/IP 协议栈
现在的服务器支撑上百万个并发 TCP 连接已经不是新闻(余锋2010年的演讲,ideawu 的 iComet 开源项目,WhatsApp 做到了 2.5M).实现 C1000k 的常规做法是调整内核参 ...
- 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)
前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...
- [转]为何TCP/IP协议栈设计成沙漏型的
http://m.blog.csdn.net/blog/dog250/18959371 前几天有人回复我的一篇文章问,为何TCP/IP协议栈设计成沙漏型的.这个问题问得好!我先不谈为何它如此设计,我一 ...
- TCP/IP协议栈及OSI参考模型详解
OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设 ...
- 微软开放技术发布针对 Mac 和 Linux 的更新版 Azure Node.JS SDK 和命令行工具
发布于 2013-12-04 作者 Eduard Koller 这次为我们使用Linux 的朋友带来了更多关于部署云上虚拟机的消息.今天,微软开放技术有限公司 (MS Open Tech),想与大家分 ...
- 深入浅出TCP/IP协议栈
TCP/IP协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP协议采用4层结构,分别是应用层.传输层.网络层和链路层, ...
- linux OSI七层模型、TCP/IP协议栈及每层结构大揭秘
学习Linux,就算是像小编我这样的小萌新,也知道OSI模型.什么?!你不知道!!! 好吧,这篇秘籍拿走,不谢~~~ 一.两个协议 (1)OSI 协议模型(7层)国际协议 PDU:协议数据单元对 ...
随机推荐
- 下载 Linux 内核的脚本
介绍 在 类UNIX 环境下运行比较好(基于wget) 包括了 2.6 ~ 4.x 内核的地址. 5.x 因为 还在更新因此不做记录. 脚本下载地址: https://files.cnblogs.co ...
- GGTalk 开源即时通讯系统源码剖析之:聊天消息防错漏机制
继上篇<GGTalk 开源即时通讯系统源码剖析之:客户端全局缓存及本地存储>GGTalk客户端的全局缓存以及客户端的本地持久化存储.接下来我们将介绍GGTalk的聊天消息防错漏机制. GG ...
- Win10 内存内存占用过高的一种解决方案
前言 最近win10的电脑一开机,什么都没启动,内存占用率高达90%,笔记本虽然是8G的内存,但不应该如此不堪.在网上找到一个十分有效的解决方案. 正文 使用 win10系统自带内存诊断工具 按下 h ...
- vulnhub - ASSERTION1.0.1
vulnhub - ASSERTION 1.0.1 信息收集 nmap -sT --min-rate 10000 -p- 192.168.157.171 sudo nmap -sT -sV -sC - ...
- Mybatis-plus 中Wrapper的使用
mybatis plus条件构造器关系图 1.上图绿色框为抽象类abstract 2.蓝色框为正常class类,可new对象 3.黄色箭头指向为父子类关系,箭头指向为父类 QueryWrapper 继 ...
- 效率工具RunFlow完全手册之进阶篇
欢迎来到RunFlow手册的进阶篇,如果您还不了解RunFlow,建议先阅读我们的基础篇. (Solo 社区投稿) 搜索文件 按文件大小过滤,添加 len 参数,比如:len:1kb-2kb,len: ...
- Unity的Package库在IDE里不显示API注释的解决方法
当你在代码里使用Package库的API的时候,比如Addressable和Unity.Entities等等,以Visual Studio为例,鼠标放到API上,会发现不显示注释: 然而按F12访问源 ...
- 【C++】使用ort推理yolov10
[C++]使用ort推理yolov10 前言:由于笔者是编导专业,想玩玩yolo模型,搜来搜去全是python,所以在学会之后写一篇文章帮助和笔者同样情况的人 环境 Windows 10 C++17 ...
- 在该serializer中使用source参数指定序列化时使用的字段的choices选项
在序列化中获取time_unit字段的中文名称,你可以使用choices选项中定义的第二个值,即元组中的第二个元素.你可以通过定义一个serializer,然后在该serializer中使用sourc ...
- [rCore学习笔记 016]实现应用程序
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 设计方 ...