深入理解TCP(一)】的更多相关文章

摘要:     本文剖析了浏览器输入URL到整个页面显示的整个过程,以百度首页为例,结合Wireshark俘获分组进行详细分析整个过程,从而更好地了解TCP/IP协议栈.   一.俘获分组 1.1 准备工作 (1) 清空浏览器缓存     首先清空Web浏览器的高速缓存,确保Web网页是从网络中获取,而不是从高速缓冲取得[1].谷歌浏览器,Options --> Under the Hood --> Clear browsing data. (2)清空DNS缓存     在客户端清空DNS高速…
一.什么是TCP/IP TCP/IP是一个协议族,是因为TCP/IP协议包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等许多协议,这些协议一起称为TCP/IP协议.通信类似于语言的沟通,可以把协议理解为语言沟通,大家都说中文,咱们两个人能够互相交流. TCP/IP协议族按照层次分为链路层.网络层.传输层.应用层四个层次.(与TCP/IP协议并列的还有OSI网络框架模型---开放式系统互连参考模型,分为物理层.数据链路层.网络层.传输层.会话层.表示层.…
• TCP是一个面向链接的协议,任何一个面向连接的协议,我们都可以将其类比为我们最熟悉的打电话模型. 如何类比呢?我们可以从建立和销毁两个阶段分别来看这件事情. 建立连接阶段 首先,我们来看看TCP中经典的3次握手协议: # 主机A.B建立连接阶段3次握手过程 1. 主机A向主机B发送请求报文(其中SYN位为1).  2. 主机B接受到报文后,向主机A回复ACK报文,并为此处连接分配资源. 3. 主机A接受到ACK报文后,也向主机A回复ACK报文,并分配资源.一次TCP连接就这样建立了. 如果…
建立连接: 理解:窗口和滑动窗口TCP的流量控制TCP使用窗口机制进行流量控制什么是窗口?连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端 接收方发送的确认信息中包含了自己剩余的缓冲区尺寸 剩余缓冲区空间的数量叫做窗口 2. TCP的流控过程(滑动窗口) TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:…
原文地址:http://www.cnblogs.com/yuilin/archive/2012/11/05/2755298.html 首先简单介绍一下TCP三次握手 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务…
前言 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API).那TCP/IP又是什么呢?TCP/IP是ISO/OSI的浓缩版本,那ISO/OSI又是什么呢...接下来我们就进入枯燥的理论篇吧 先说一下,关于这几个概念特别是TCP/IP和HTTP,讲解它们的书,随便拿出一本都厚到可以砸死人,所以本文仅仅是浅显的概括一下,并且还有很多的概念我都不太明白,先做个记录吧等后续有深入的机会再回来.也希望有朋友能在留言中指…
    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态: 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入…
在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接,示意图如下: 下面通过一个小故事简单理解一下这三次握手的具体含义: 一天,快递员小客(客户端)准备去小服(服务器)家去送快递(准备与服务器进行连接),当走到小服家门口发现,小服家大门紧锁, 然后便高喊,"您好,你把门打开,由您的快递(尝试与服务器建立连接),我是快递员小客(发送同步序列编号Synchronize Sequence Numbers ,确认身份信息)",此时,小客进入等待小服回应的状态(客户端进入SYN_SEN…
理解之后,应该说是至少三次就可以保证可靠传输了. 看到网上一篇帖子http://www.cnblogs.com/TechZi/archive/2011/10/18/2216751.html是这么说的,“我Google该问题答案后发现,网络上对于“三次握手”的过程都有很详细的描述,但对于为什么需要“三次握手”来建立连接却没有很好的答案.只能求助于书本了.”后面有谢希德树和另一本书的解释,其实还是太书面化,不够通俗,但是看到后面引到google论坛看到一个让我非常满意的答案. https://gro…
TCP数据传输过程 TCP乱序重组原理 HTTP解析渲染 TCP乱序重组 TCP具有乱序重组的功能.(1)TCP具有缓冲区(2)TCP报文具有序列号所以,对于你说的问题,一种常见的处理方式是:TCP会先将报文段3缓存下来,当报文段2到达时,再根据序列号进行拼接.2 当然缓冲区也有满的时候,这时接收端会直接丢弃报文,不做任何其他处理:发送方的定时器发现迟迟收不到接收方丢弃报文的确认号(ack number),就会重传该报文.这就是TCP的超时重传功能 Sequence Number是包的序号,用来…
文章转自:https://www.cnblogs.com/onepixel/p/7092302.html TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求.由于我们大部分时间都工作在应用层,下层的事情不用我们操心:其次网络协议体系本身就很复杂庞大,入门门槛高,因此很难搞清楚TCP/IP的工作原…
原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ from:https://blog.csdn.net/a19881029/article/details/38091243 如果你正在读这篇文章,很可能你对TCP“非著名”的“三次握手”或者说“SYN,SYN/ACK,ACK”已经很熟悉了.不幸的是,对很多人来说,对TCP的学习就仅限于此了.尽管年代久远,TCP仍…
前言: TCP协议是计算机的基础,他本身是一个非常非常复杂的协议. 本文只是蜻蜓点水,将从网络基础以及TCP的相关概念介绍开始,之后再将三次握手,四次挥手这些内容来阐述. 最后介绍一些常见问题,并给出解答. 网络分层 在实际的网络中,我们是四层网络结构: 网络传输层 网络传输层负责最底层的底层链路连接.两台主机之间进行互联,基于网线的物理硬件上的协议.在这个侧面,主机与主机之间只认得硬件mac编码.并不认识IP. 网络层 IP就是在网络层出现的,就像网络上,每个机器的地址.网络层可以理解为快递,…
  本文作者:饶全成,中科院计算所硕士,滴滴出行后端研发工程师. 个人主页:https://zhihu.com/people/raoquancheng   记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去我也不懂,皆大欢喜! 作为程序员,要有“刨根问底”的精神.知其然,更要知其所以然.这篇文章希望能抽丝剥茧,还原背后的原理. 什么是“…
理解HTTP之keep-alive 在前面一篇文章中讲了TCP的keepalive,这篇文章再讲讲HTTP层面keep-alive.两种keepalive在拼写上面就是不一样的,只是发音一样,于是乎大家就都迷茫了.HTTP层面的keep-alive是我们接触比较多的,也是大家平时口头上的"keepalive".下面我们就来谈谈HTTP的keep-alive 短连接&长连接&并行连接 再说keep-alive之前,先说说HTTP的短连接&长连接. 短连接 所谓短连…
from : https://blog.csdn.net/Neo233/article/details/72866230?locationNum=15&fps=1%20HTTP%E6%8F%A1%E6%89%8B   通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手. 引用网上的一些通俗易懂的例子,虽然不太正确,后面会指出,但是不妨碍我们理解,大体就是这么个理解法. 第一次对话: 老婆让甲出去打酱油,…
通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手. 引用网上的一些通俗易懂的例子,虽然不太正确,后面会指出,但是不妨碍我们理解,大体就是这么个理解法. 第一次对话: 老婆让甲出去打酱油,半路碰到一个朋友乙,甲问了一句:哥们你吃饭了么? 结果乙带着耳机听歌呢,根本没听到,没反应.甲心里想:跟你说话也没个音,不跟你说了,沟通失败.说明乙接受不到甲传过来的信息的情况下沟通肯定是失败的. 如果乙听到了甲说的话…
摘要:     本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述     TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立连接,这里的连接只不过是端系统中分配的一些缓存和状态变量,中间的分组交换机不维护任何连接状态信息.连接建立整个过程如下(即三次握手协议): 首先,客户机发送一个特殊的TCP报文段: 其次,服务器用另一个特殊的TCP报文段来响应: 最后,客户机再用第三个特殊报文段…
摘要:     本文简单介绍了Web应用层协议理论知识,详细讲述了HTTP请求报文和响应报文各个字段含义,并从Wireshark俘获分组中选取HTTP相关报文进行分析. 一.概述     Web的应用层协议是超文本传输协议HTTP,HTTP协议由两部分程序实现:客户机程序.服务器程序,协议定义了这些报文的格式以及客户机和服务器如何进行报文交换的.Web服务器用于存储Web对象,每个对象由URL寻址,Web客户机通常指浏览器.浏览器向服务器发出对Web页中所包含对象的HTTP请求报文,服务器接受请…
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接. 位码(可以理解为请求状态): 有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) 序号: 有两种:Sequence number(顺序号码) Acknowledge number(确认号码) 顺序号是发送方定义,确认号是接收方返回的(ack num = s…
三次握手流程的本质,可以这么理解:TCP的三次握手其实是双方各一次握手,各一次确认,只是其中一次握手和确认合并在一起. 当然也可以更通俗的去理解: "喂,你听得到吗?" "我听得到呀,你听得到我吗?" "我能听到你" 为什么不用两次或四次 原因很简单,因为只有三次才是最合适的,三次通信是最小值,两次通信满足不了要求,而四次通信则显得冗余. 比如之前的三次改成两次,四次的结果就变味了. 两次握手: "喂,你听得到吗?" &quo…
TCP相关知识 TCP是面向连接的传输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,HTTP协议并没有明确要求必须使用TCP协议作为运输层协议,但是因为HTTP协议对可靠性的的要求,默认HTTP是基于TCP协议的.若是使用UDP这种不可靠的.尽最大努力交付的运传输层协议来实现HTTP的话,那么TCP协议的流量控制.可靠性保障机制等等功能就必须全部放到应用层来实现)而相比网络层更进一步,传输层着眼于应用进程间的通信,而不是网…
TCP是一个全双工协议,意味着在Client和Server都可以接收和发送数据. 所以,从另一个角度理解建立连接的目的就是要确保双方都要知道对端的收发消息的能力是正常的…
1 前言 前面写了10多篇关于Redis底层实现.工程架构.实际应用的文章,感兴趣的读者可以进行阅读,如有问题欢迎交流: 1.Redis面试热点之底层实现篇-12.Redis面试热点之底层实现篇-23.Redis面试热点之工程架构篇-14.Redis面试热点之工程架构篇-25.基于Redis的分布式锁和Redlock算法6.浅谈集群版Redis和Gossip协议7.理解Redis的反应堆模式8.理解Redis单线程运行模式9.浅析Redis 4.0新特性之LazyFree10.理解Redis持久…
PS:通俗一点的解释都会在引用块中 Nothing is true, Everything is permitted. 0. 什么是TCP TCP,全称Transmission Control Protocol,是一种面向连接.可靠的.基于字节流的单播协议.与我们常说的TCP/IP协议不同,TCP/IP是一个协议族,涉及到OSI模型中的网络层.应用层和应用层.而我们要聊的TCP就是在传输层的协议,现在应用的特别广泛的HTTP请求,就是基于TCP的. 1. 三次握手 所谓面向连接很好理解,就像我们…
什么是Socket?    大家都用电脑上网,当我们访问运维社区https://www.unixhot.com的时候,我们的电脑和运维社区的服务器就会创建一条Socket,我们称之为网络套接字.那么既然是网络通信,肯定是成对的.至少有一个客户端和服务端,我们称之为套接字对.    一个套接字对(socket pair)是一个定义该网络连接的两个端点的五元组,包括: 源IP地址 源端口 目的IP地址 目的端口 类型:TCP or UDP 那么针对于HTTP请求来说,我们知道底层是建立了一条TCP的…
点击阅读原译文 原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ 如果你正在读这篇文章,很可能你对TCP"非著名"的"三次握手"或者说"SYN,SYN/ACK,ACK"已经很熟悉了.不幸的是,对很多人来说,对TCP的学习就仅限于此了.尽管年代久远,TCP仍是一个相当复杂并且值得研究的协议.这篇文章的目的是让你能够…
0x00.前言 通过本文你将了解到以下内容: 拥塞控制概念以及其背景 流量控制和拥塞控制的区别与联系 拥塞控制主要过程详解 伙伴们认真学习一下,让offer来得更猛烈些吧! 0x01.TCP/IP协议栈简要回顾 来看下维基百科对TCP/IP的一些介绍,笔者做了少量的修改来确保语句通顺: 互联网协议套件是一个网络通信模型以及整个网络传输协议家族,由于该协议簇包含两个核心协议:TCP(传输控制协议)和IP(网际协议),因此常被通称为TCP/IP协议族. TCP/IP协议对于数据应该如何封装.定址.传…
三次握手 我们先提出一些问题,但是我们暂且不回答这些问题,下面我会尽我所能详尽地讲解TCP的三次握手过程,然后看完你可以在评论区留下你对问题的答案,我们可以一起探讨. 为什么要握手 为什么是三次而不是两次或者四次 相比不需要握手的UDP有什么优点和缺点 握手的过程可以携带数据吗 握手的过程会带来什么安全问题吗 TCP被称为是面向连接的,这是因为一个应用进程可以开始向另一个应用进程发送数据之前,这两个进程必须先互相"握手",以建立确保数据传输的参数. 下面放一张图 首先cilent向se…
1.tcp是有连接的, 这个不是说他有个实际的连接,这个是个虚拟的连接,连接的保持信息不是由连接的路线来保存的,他是由连接的两方来保存其状态信息,这就是面向连接的, 2.tcp要3次握手: 客户端发给服务端请求一个信息,服务端给客户端一个已经接受到信息,然后客户端再给服务端一个已经接受到信息, 第一个握手,服务端收到后,知道了客户端发信息,和自己接受信息没问题,第二个握手,客户端知道了自己接受信息没问题, 第三个握手,服务端知道了自己发送信息没问题 3.滑动窗口模式: 一次的信息太大时没有办法一…