Comments (95)
学习记录一下笔记,多看看,多领会,切勿浮躁一口吃成胖子。
from blog.
如果你是TCP/IP协议规则的制定人,你可以让ack = x + 1000都没问题,一切规范都是人为制定的,当初就是这么规定的,ack = x + 1,ack = x + 2, ack = x + 3这三种是一个效果,它们是平行的,没有任何区别,其实只要明白,制定这个规则的目的主要用来解决不丢包的问题,明白这个就行了
from blog.
三次握手,这张图更准确些吧。ACK大小写有区分。
对啊 。楼主那个图越看越懵。前文说到 ACK 只有0 和1 有用。图里面的又是X+1
from blog.
指出一个问题,三次握手的那张配图,第二、三次握手中的ACK应该是小写,不是大写。大写的ACK代表1bit的标志位,小写的ack才是32bit的确认序列号。
from blog.
你好 我想问一下为什么客户端发送seq = x后服务器发送ack = x + 1而不是ack = x + 2, ack = x + 3等等??
from blog.
通俗介绍那个例子太真实了,就像人与人的信任关系,当你送别人东西的时候,别人也会送一个给你,当第二次再送礼物的时候,两者已经构成了所谓的「关系」了
from blog.
大概我孤陋寡闻,第一次见到用issue写博客的大佬,长见识了。
不过想想也是,又支持markdown又有评论系统,棒呆。
from blog.
受教了谢谢
from blog.
你好 我想问一下为什么客户端发送seq = x后,服务器发送ack = x + 1而不是ack = x + length + 1,这里的length指服务端接收到的上个报文段所携带的字节数。
from blog.
- why-do-we-need-a-3-way-handshake-why-not-just-2-way
- why-tcp-connect-termination-need-4-way-handshake
由此可以看出,TCP这样做,其实是为了保证连接的可靠性
from blog.
为什么三次握手?为什么四次挥手?最后几段简直就是神来之笔!!!
from blog.
三次握手,这张图更准确些吧。ACK大小写有区分。
from blog.
from blog.
向大神学习
from blog.
通俗易懂
from blog.
👍
from blog.
受教,受我一拜
from blog.
学习了
from blog.
好文!!
from blog.
tcp传输数据以字节为单位,ack+1是代表之前的数据已经接收了,期望下次接收从下一个字节开始的数据包
from blog.
GitHub大神多。
from blog.
有个疑问,博主在介绍 套接字(socket)概念的时候,提到:“应 用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务“”。
本人有不同意见:传输层屏蔽了低层的实现过程,只抽象成给上层应用层使用的接口,这接口就是Socket;而不是博主说道的应用层和传输层一起通过借助Socket接口......。
from blog.
厉害了!
from blog.
收藏一个👨🏿💻
from blog.
奋斗的小石头
from blog.
值得学习,上次面试到这题,答的很水
from blog.
总结的不错!star
from blog.
多谢大神总结,面试的时候u被问到这个问题了,理解的还不是很透彻。
from blog.
感谢分享!
from blog.
深入浅出
from blog.
666
from blog.
学习共进 📕
from blog.
没怎么看懂~
from blog.
写的好!
from blog.
謝謝分享!!!
from blog.
不错,写的好,就应该点赞
from blog.
你写的让我很容易懂,Thanks
from blog.
写的很好,谢谢分享
from blog.
很好,标记一下,谢谢楼主.
from blog.
赶紧冒个泡
from blog.
学习了!第一遍有些没看懂,过两天再看一遍!顺便mark下
from blog.
写的真好,感谢楼主
from blog.
好文,易理解
from blog.
好文!个人见过tcp讲的最清楚的一篇文章
from blog.
写的很好,话说这文章的很多内容是不是黏贴复制的?怎么感觉文采挺好的,内容长度也可以
from blog.
好文章,通俗易懂,描述很透彻.谢谢文主的分享
from blog.
总结的很全面,很明了。感谢!
from blog.
好人一生平安
from blog.
Great ! 写的很好,极度make sense,我google tcp协议地一个就找到它了.就是不知道为何不写在repository里面而是在issue里(那些fork的人是想干嘛:joy:),这样的话其他人也可以一起修改,至少我就看到了有一些打错的typos,还有FIN ACK sequence number etc.那段和那个图一块感觉有些confusing. 但不管怎样,很有帮助!Thx
from blog.
请问下 4次挥手中的第二次挥手不要感觉好像也可以,1发送给2说我要主动我要断开连接了,2知道1已经没数据连接了,此时2有数据还没发送完就继续发送咯,等2发送完了再告诉1我也可以断开连接了并且关闭连接;此时1在ACK下;
from blog.
数据传输阶段,服务器收到客户端数据后,确认号Ack=收到的序列号+1?好像不对吧?应该是Ack=seq+length吧?
from blog.
向先进学习。
from blog.
thanks
from blog.
感激涕零,逻辑清晰,通俗易懂
from blog.
nice~
from blog.
估计协议制定者把SYN和FIN看做了一个长度的数据,这样的话
客户端发送seq = x后服务器发送ack = x + 1
from blog.
在TCP报文里ACK,SYN都是标志位,也就是1或0,但是图片里用了ACK=x+1,图片的ACK里的内容应该表示序号和确认号吧?
from blog.
图片里面的ACK=xx
指的是有ACK信号,然后ack number=xxx 这样的?
from blog.
good + 1
from blog.
TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议
运输层-->传输层
from blog.
mark
from blog.
感谢分享
from blog.
感谢分享
from blog.
赞!👍
from blog.
楼主,可以转载嘛
from blog.
from blog.
非常不错,通俗易懂
from blog.
文章通俗易懂,但不明白为什么面试会有人爱问这样的问题。。。
from blog.
ACK:有两个取值:0和1,为1的时候表示应答域有效,反之为0;ACK不是标志位吗,为啥要ACK = X+1?
from blog.
ACK:有两个取值:0和1,为1的时候表示应答域有效,反之为0;ACK不是标志位吗,为啥要ACK = X+1?
ACK为确认报文字段,ack为确认应答号,两个不同的呀
from blog.
第一次握手, 客户端发送SYNC请求后, 客户端进入状态应该为 SYN_SENT
, 不是 SYN_SEND
: )
from blog.
很有收获,终于看进一篇文章去了。
了解TCP协议,即传输控制协议,我感觉是对通信过程的理解,毕竟也没要求我们去优化TCP协议 。
有助于对socket如何长连接和http请求等通信问题的理解。
from blog.
你好,这两天遇到一个问题,想来探讨一下:
前两天我们公司测试大哥为了测试功能,修改了手机系统时间,将时间往前调了一周,然后证书验证的时候报ssl 证书错误,找了几天问题,无意间发现可能是由于修改了手机系统时间导致。在恢复正常的系统时间后,ssl证书错误也随即消失。
在网上找相关的知识想补一下,大部分都是说SSL双方系统时间不一致导致的SSL连接失败,然后怎么解决。再看了你的文章,讲到三次握手的时候,发现这么一段,不知道SSL双方系统时间不一致导致的SSL连接失败是不是因为握手的时候时间不一致导致?真心求解答,探讨。
from blog.
大佬,跪了!
from blog.
还得再看几遍
from blog.
厉害
from blog.
你好 我想问一下为什么客户端发送seq = x后服务器发送ack = x + 1而不是ack = x + 2, ack = x + 3等等??
服务器发送ack= x+1,表示序号x(包含x)以前的包都已正常接收,服务器下次期待收到的包的序号为x+1
from blog.
ACK:有两个取值:0和1,为1的时候表示应答域有效,反之为0;ACK不是标志位吗,为啥要ACK = X+1?
ACK:有两个取值:0和1,为1的时候表示应答域有效,反之为0;ACK不是标志位吗,为啥要ACK = X+1?
ACK为确认报文字段,ack为确认应答号,两个不同的呀
SYN、ACK是一个标记位,tcp包头中还有一个确认应答号字段,一般表示为ACK+包序号
from blog.
可以介紹一下QUIC協議為甚麼可以簡化握手嗎
from blog.
老哥,图裂了
from blog.
其实应该是三向握手,而不是三次握手,三个报文结合起来才是一次握手
from blog.
你好 我想问一下为什么客户端发送seq = x后服务器发送ack = x + 1而不是ack = x + 2, ack = x + 3等等??
看过 “TCP三次握手四次挥手详解” https://zhuanlan.zhihu.com/p/40013850 文章和《图解TCP/IP》数据TCP首部格式内容之后此处ack应该是确认应答号(Acknowledgement Number)而不是首部控制位的ACK。两者关系是当控制位ACK=1时,确认应答号字段变为有效。确认应答号表示下一次应该收到的数据序列号。发送端收到的这个确认应答以后可以认为在这个序列号以前的数据都已经被正常接收。第二次握手数据应该是:SYN=1,ACK=1,Seq=Y,AckNum=x+1,第三次握手数据应该是:Acknum=y+1,SYN=0,ACK=1。不知道个人理解的是否正确,希望大家多交流。三次握手正确图应该是上面有位老哥提供的图:#14 (comment)
from blog.
如果sequence numbers绑定到整个网络时钟,是不是就不需要三次握手这个步骤了???
from blog.
好文马克学习
from blog.
你好 我想问一下为什么客户端发送seq = x后服务器发送ack = x + 1而不是ack = x + 2, ack = x + 3等等??
你可以看下这个ack报文的意思,简单来说是确认收到了滴多少个字节
from blog.
对啊 。楼主那个图越看越懵。前文说到 ACK 只有0 和1 有用。图里面的又是X+1
請問一下 傳輸的時候不需要在 傳遞ACK+1 等訊息了嗎?
這樣是否就等同於UDP了?
from blog.
ACK是6个标志位中的一个,值是0或1,1表示确认号有效,0表示无效。可以写作ACKbit=1;
TCP报文中还包含序号(Seq)和确认号(也叫ACK),分别为自己发送数据包的序号和期望收到的对方数据包的序号。和上面的ACK处在报文的不同位置,是两个东西。可以写作ACKnum=x+1。
三次握手中除了确定双方连接正常(发送SYNbit=1,ACKbit=1)同时也交换了双方的序列号(ACKnum=x+1和ACKnum=y+1)。
from blog.
图呢图呢 被谁吃了
from blog.
赞一个啊 收藏了
from blog.
666
from blog.
学习了!
from blog.
图挂了
from blog.
有一个小小的问题,两次握手会让server浪费资源,请问这个具体浪费的是哪些资源?是连接建立过程中的一些文件读写开销吗?
from blog.
还可以这样写博客,学到了
from blog.
图画的很风趣
from blog.
Related Issues (20)
- test
- question
- 学习了!
- 安利一下自己为 GitHub 开发的首个 Chrome 插件—GayHub😂 HOT 51
- CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅 HOT 47
- JavaScript 优雅的实现方式包含你可能不知道的知识点 HOT 44
- blog搬家了?请放出地址呦 HOT 2
- 一行代码实现一个简单的模板字符串替换 HOT 17
- 哥们你域名过期了 http://qdxmq.com/ HOT 1
- add方法里的数组有没有必要抽出一个config.js文件 HOT 1
- 3 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #------------------------------------------------- # # Project created by QtCreator 2018-10-25T08:32:36 # #------------------------------------------------- QT += core gui QT += serialport greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = COMTOOLV2 TEMPLATE = app RC_FILE =main.rc # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLS HOT 2
- a == 1 && a == 2 && a == 3 输出true方法
- 前端小蜜圈链接跳转到了菠菜站了 HOT 2
- PM2部署网站的一个诡异缓存问题
- echo 127.0.0.1
- vue项目 HOT 1
- m
- 停更了?
- 三次握手与四次挥手
- 有人继续维护吗? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blog.