网络基础知识之tcp的三次握手

网络是企业对外提供服务的一个重要因素,网络管理也是一个Linux运维人员的必学技能之一。网络是一个复杂的体系结构,一般将网络分成多个层次,主要有tcp/ip模型和osi模型。

分层的网络模型可以大大简化网络的复杂度,可以标准化网络接口简化模块化设计,确保技术的互操作性等作用。

OSI模型的七层结构

第一层:物理层,二进制传输。为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范

第二层:数据链路层,访问介质。定义如何格式化数据以便进行传输以及如何控制对网络的访问并且支持对错误的检查。

第三层:网络层,数据传输。路由数据包并选择传递数据的最佳路径,支持逻辑寻址和路径选择

第四层:传输层,传输问题。确保数据传输的可靠性,建立、维护和终止虚拟电路,可以进行错误检查和恢复,通过信息流控制来保障可靠性

第五层:会话层,主机间通信。建立、管理和终止在应用程序之间的通话

第六层:表示层,数据表示。确保接受系统可以读出该数据,格式化数据,构建数据,协商用于应用层的数据传输语法,提供加密

第七层:应用层,网络进程访问应用层。为应用程序提供网络服务,提供用户身份验证

TCP/IP协议栈

第一层:网络访问层(Network Access),对应OSI的物理层和数据链路层

第二层:internet层,对应网络层

第三层:传输层(Transport)

第四层:应用层(Application),对应OSI的会话层,表示层和应用层

传输层:主要有TCP和UDP协议

TCP协议特性:
1、工作在传输层面向连接协议

2、双工模式操作

3、错误检查

4、数据包序列

5、确认机制

6、数据恢复特性

TCP包头

建立连接的三次握手机制

三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。

1. (B) –> [SYN] –> (A)
假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接.
注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认识到这点很重要,只有当A受到B发来的SYN包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能让外部任何主机主动建立连接。

2. (B) <– [SYN/ACK] <–(A)
接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作.
注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包.

3. (B) –> [ACK] –> (A)
B收到SYN/ACK 包,B发一个确认包(ACK),通知A连接已建立。至此,三次握手完成,一个TCP连接完成
Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位

握手阶段:
序号 方向 seq ack
1  A->B 10000 0
2 B->A 20000 10000+1=10001
3 A->B 10001 20000+1=20001
解释:
1:A向B发起连接请求,以一个随机数初始化A的seq,这里假设为10000,此时ACK=0

2:B收到A的连接请求后,也以一个随机数初始化B的seq,这里假设为20000,意思是:你的请求我已收到,我这方的数据流就从这个数开始。B的ACK是A的seq加1,即10000+1=10001

3:A收到B的回复后,它的seq是它的上个请求的seq加1,即10000+1=10001,意思也是:你的回复我收到了,我这方的数据流就从这个数开始。A此时的ACK是B的seq加1,即20000+1=20001

数据传输阶段:
序号  方向      seq ack size
23 A->B 40000 70000 1514
24 B->A 70000 40000+1514-54=41460 54
25 A->B 41460 70000+54-54=70000 1514
26 B->A 70000 41460+1514-54=42920 54
解释:
23:B接收到A发来的seq=40000,ack=70000,size=1514的数据包
24:于是B向A也发一个数据包,告诉B,你的上个包我收到了。B的seq就以它收到的数据包的ACK填充,ACK是它收到的数据包的SEQ加上数据包的大小(不包括以太网协议头,IP头,TCP头),以证实B发过来的数据全收到了。
25:A在收到B发过来的ack为41460的数据包时,一看到41460,正好是它的上个数据包的seq加上包的大小,就明白,上次发送的数据包已安全到达。于是它再发一个数据包给B。这个正在发送的数据包的seq也以它收到的数据包的ACK填充,ACK就以它收到的数据包的seq(70000)加上包的size(54)填充,即ack=70000+54-54(全是头长,没数据项)。

其实在握手和结束时确认号应该是对方序列号加1,传输数据时则是对方序列号加上对方携带应用层数据的长度.如果从以太网包返回来计算所加的长度,就嫌走弯路了.
另外,如果对方没有数据过来,则自己的确认号不变,序列号为上次的序列号加上本次应用层数据发送长度.

有时在发送的数据包里还有Window Size=x,意味着我方一次最多只能接受x个包,如果对方一次性发送的包大于x,则丢弃x以外的包,并要求重新发送。注意,这个值在数据传输时可能会有变化。

TCP和UDP端口号

UDP协议特性:

1、提供不可靠的网络访问

2、非面向连接协议

3、有限的错误检查

4、传输性能高

5、无数据恢复特性

UDP包头

时间: 2024-12-15 05:38:00

网络基础知识之tcp的三次握手的相关文章

网络基础知识查询

第一章.基础网络概念 1.1 网络是个什么玩意儿 全世界的人种有很多,人类使用的语言种类也多的很.那如果你想要跟外国人沟通时,除了比手划脚之外,你要如何跟对方讲话? 大概只有两种方式啰,一种是强迫他学中文,一种则是我们学他的语言,这样才能沟通啊.在目前世界上的强势语言还是属于英语系国家, 所以啰,不管是啥人种,只要学好英文,那么大家都讲英文,彼此就能够沟通了.希望不久的未来,咱们的中文能够成为强势语言啊! 这个观念延伸到网络上面也是行的通的,全世界的操作系统多的很,不是只有 Windows/Li

网络基础知识、ASP.NET 核心知识(1)*

为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发人员,你所开发的软件产品最终是要在网络上运行的.这就像一个生产商,要生产供给东北地区的产品,而生产商对东北的天气.地理.人文毫无了解.生产商的产品肯定是不可用的,或者低端的!产品质量不好,那是自然的.产品质量好,那算你点儿高.那么作为ASP.NET开发人员,如果一点不懂http协议.不晓得Ajax.

软考之路(1)——浅解网络基础知识

对网络这一块的基础知识理解如下,以图文并茂的形式展出,便于分析和理解.解析与图如下: 物理层: 功能: 提供为建立.维护和拆除物理链路所需的机械.电气.功能和规程的特性: 提供有关在传输介质上传输非结构的位流及物理链路故障检测指示: 为数据链路层提供一个物理连接,以及他们的机械.电气.功能和过程性.如规定使用电缆和接头的类型,传送信号的电压.在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是位. 物理链路: 这里多次出现物理链路,简单解释物理链路:一条无源的点到点的物理线路段,中

网络基础知识---Roberts协议

Robots协议(也称为爬虫协议.机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取. Robots协议是网站出于安全和隐私考虑,防止搜索引擎抓取敏感信息而设置的.搜索引擎的原理是通过一种爬虫spider程序,自动搜集互联网上的网页并获取相关信息.而鉴于网络安全与隐私的考虑,每个网站都会设置自己的Robots协议,来明示搜索引擎,哪些内容是愿意和允许被搜索引擎收录的,哪些则不允许

【网络基础】OSI TCP/IP体系结构

OSI参考模型是由国际标准化组织于1977年制定的,这是一个计算机互连的国际标准. ISO制定这一国际标准的宗旨就是使任何一种计算机系统无论位于世界任何地方,只要符合OSI标准就能和另一个遵守OSI标准的计算机系统实现互联通信. OSI模型分为7层:从下到上依次是物理层.数据链路层.网络层.传输层.会话层.表示层.应用层:OSI参考模型概念清楚,理论较完整,但它既复杂又不实用. 而TCP/IP体系结构却不同,是目前最流行的商业化网络协议,虽然不是标准化组织提出的正式标准,但它已经被公认为目前的工

网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法

TCP协议:三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立连接的请求 3:客户端接收到服务端发来的请求,返回接成功给服务端,完成双向连接 第一客戶向服务端发送请求,请求建立连接 服务端同客户端的请求,并同时向客户端发送建立 连接的请求,最后客户端同意后建立 双向连接. C ----> S C <---- S - 反馈机制: 客户端往服务端发送请求,服务端必须返回响应, 告诉客户

简析TCP的三次握手与四次分手

TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层:在第二层上的数据,我们把它叫Frame,在第三层上的数据叫Packet,第四层的数据叫Se

简析TCP的三次握手与四次分手(TCP协议头部的格式,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端)good

2014-10-30 分类:理论基础 / 网络开发 阅读(4127) 评论(29) TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层:在第二

大杂烩 -- 简析TCP的三次握手与四次分手

基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层