报文交换

程序员面试被问到“三次握手,四次挥手”怎么办?

不问归期 提交于 2019-12-01 19:13:12
作者 | 饶全成 责编 | 郭 芮 记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去我也不懂,皆大欢喜! 作为程序员,要有“刨根问底”的精神。知其然,更要知其所以然。这篇文章希望能抽丝剥茧,还原背后的原理。 什么是“3次握手,4次挥手”? TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。 TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。 TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接。 TCP服务模型 在了解了建立连接、关闭连接的“三次握手和四次挥手”后,我们再来看下TCP相关的东西。 一个TCP连接由一个4元组构成,分别是两个IP地址和两个端口号。一个TCP连接通常分为三个阶段:启动、数据传输、退出(关闭)。 当TCP接收到另一端的数据时,它会发送一个确认,但这个确认不会立即发送,一般会延迟一会儿。ACK是累积的

TCP三次握手和四次挥手

我只是一个虾纸丫 提交于 2019-12-01 18:54:29
在计算机网络中,TCP的连接的建立和断开过程即三次握手和四次挥手是相当重要的。本人在面试的时候,就经常会被面试官问到这方面的知识,一开始虽然自己心里是知道但表达出来还是磕磕碰碰的,相当坎坷,但这可能会导致面试官会产生一种觉得你对这块的知识并不是很熟悉的“错觉”。所以把基础的知识掌握并明确的表达出来很重要,本人血的教训QAQ。 所以,今天就将TCP的三次握手和四次挥手过程做详细整理,并附上面试过程中常被问到的问题及其答案,以便后续复习和大家参考。 在计算机网络体系结构中,TCP是作用在运输层的一个面向连接的协议。所以TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。 一、TCP连接的建立的释放过程 1、TCP连接的建立(三次握手) TCP建立采用客户服务器方式, 主动发起连接建立的应用进程叫做客户端,被动等待连接的叫做服务器 。TCP连接的的过程叫做握手,握手需要在客户和服务器之间交换三个TCP报文段,其实大家口中流传的三次握手并不是进行了三次握手,而是一次握手过程中交换了三个报文,准确的描述应该是“ 三报文握手 ”即“three way (three message) handshake”。 下图给出了具体过程: 注意: TCP规定,SYN报文段不能携带数据但要消掉一个序号; TCP规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号

TCP三次握手和四次挥手详解

丶灬走出姿态 提交于 2019-12-01 18:53:49
TCP: SYN ACK FIN RST PSH URG 详解 TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建立,开始通讯。 SYN:同步标志 同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。 ACK:确认标志 确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据 RST:复位标志 复位标志有效

OSPF总结

纵饮孤独 提交于 2019-12-01 18:38:17
OSPF概念 OSPF :Open Shortest Path First,开放最短路径优先协议,是一种链路状态路由协议,在RFC 2328中描述。Open意味着开放、公有,任何标准化的设备厂商都能够支持OSPF。 与RIP的区别 ※ RIP:运行距离矢量路由协议,周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻(直连)的路由器学习到路由,并且加载进自己的路由表中,而对于这个网络中的所有路由器而言,他们并不清楚网络的拓扑,他们只是简单的知道要去往某个目的应该从哪里走,距离有多远。 ※ OSPF:运行链路状态路由协议,路由器之间交互的是LSA(链路状态通告),而非路由信息,路由器将网络中泛洪的LSA搜集到自己的LSDB(链路状态数据库)中,这有助于OSPF理解整张网络拓扑,并在此基础上通过SPF最短路径算法计算出以自己为根的、到达网络各个角落的、无环的树,最终,路由器将计算出来的路由装载进路由表中。 OSPF特性  OSPF链路状态协议(开放式最短路径优先),支持VLSM(变长子网掩码),CIDR(无类路由协议),支持安全认证  采用SPF算法(Dijkstra算法)计算最佳路径,快速响应网络变化  网络变化是触发更新  以较低频率(每隔30分钟)发送定期更新,被称为链路状态刷新  与距离矢量相比,链路状态协议掌握更多的网络信息 OSPF三张表 1. 邻居表

TCP的三次握手与四次挥手(详解+动图)

百般思念 提交于 2019-12-01 18:36:35
背景描述 通过上一篇中网络模型中的 IP层的介绍 ,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机, 但是并没有交付给主机的具体应用进程 。而 端到端的通信 才应该是应用进程之间的通信。 UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。 TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。 常用的熟知端口号 应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL 熟知端口 21,20 69 23 25 53 80 22 3306 传输层协议 TCP UDP TCP TCP UDP TCP TCP TCP TCP的概述 TCP把连接作为最基本的对象

后端开发工程师面试题汇总 | 网络知识

本秂侑毒 提交于 2019-12-01 18:13:01
无论做前端开发还是后端开发,网络知识是必备的知识。这部分知识是基础中的基础,是我们必须掌握的内容。网络相关的问题也是在面试过程中经常被问到的内容。本文主要梳理了一下网络相关的主要知识点及面试中经常被问到的内容,希望对大家有所帮助。 OSI有哪几层,会画出来,知道主要几层的各自作用 OSI(Open System Interconnect),即开放式系统互联,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。其一共有7层: 1. 应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用 2. 表示层(数据):主要解决拥护信息的语法表示问题,如加密解密 3. 会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的 4. 运输层(段):实现网络不同主机上用户进程之间的数据通信,可靠 与不可靠的传输,传输层的错误检测,流量控制等 5. 网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的 传输 6. 数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正 7. 物理层(比特流):设备之间比特流的传输,物理接口,电气特性等* TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称 TCP/IP分层模型(TCP/IP Layening Model

TCP/IP协议详解

北慕城南 提交于 2019-12-01 13:26:45
1, OSI,TCP/IP,五层协议的体系结构,以及各层协议 OSI分层 (7层) :物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层) :网络接口层、 网际层、运输层、 应用层。 五层协议 (5层) :物理层、数据链路层、网络层、运输层、 应用层。 每一层的协议如下 : 物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关) 数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机) 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器) 传输层:TCP、UDP、SPX 会话层:NFS、SQL、NETBIOS、RPC 表示层:JPEG、MPEG、ASII 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS 每一层的作用如下 : 物理层: 通过媒介传输比特,确定机械及电气规范(比特Bit) 数据链路层 :将比特组装成帧和点到点的传递(帧Frame) 网络层 :负责数据包从源到宿的传递和网际互连(包PackeT) 传输层 :提供端到端的可靠报文传递和错误恢复(段Segment) 会话层 :建立、管理和终止会话(会话协议数据单元SPDU) 表示层 :对数据进行翻译、加密和压缩(表示协议数据单元PPDU) 应用层 :允许访问OSI环境的手段(应用协议数据单元APDU

vlan与交换机端口模式Access,Hybrid,Trunk

人走茶凉 提交于 2019-12-01 10:13:00
https://blog.csdn.net/JesseYoung/article/details/40047749 1 vlan简介 VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。VLAN是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。这一新兴技术主要应用于交换机和路由器中,但主流应用还是在交换机之中。但又不是所有交换机都具有此功能,只有VLAN协议的第二层以上交换机才具有此功能。802.1Q的标准的出现打破了虚拟网依赖于单一厂商的僵局,从一个侧面推动了VLAN的迅速发展。 2 交换机端口工作模式简介 交换机端口有三种工作模式,分别是Access,Hybrid,Trunk。 Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口; Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口; Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。 Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。 3 基本概念

什么是接口测试?怎样做接口测试?

ⅰ亾dé卋堺 提交于 2019-12-01 09:35:49
1.什么是接口? 2.接口都有哪些类型? 3.接口的本质是什么? 4.什么是接口测试? 5.问什么要做接口测试? 6.怎样做接口测试? 7.接口测测试点是什么? 8.接口测试都要掌握哪些知识? 9.其他相关知识? 1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。 2.接口都有哪些类型? 接口一般分为两种:1.程序内部的接口 2.系统对外的接口 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。 程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。 接口的分类:1.webservice接口 2.http api接口 webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。 http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的

接口测试总结

China☆狼群 提交于 2019-12-01 07:48:49
1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。 2.接口都有哪些类型? 接口一般分为两种:1.程序内部的接口 2.系统对外的接口 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。 程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。 接口的分类:1.webservice接口 2.http api接口 webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。 http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。 json是一种通用的数据类型,所有的语言都认识它。(json的本质是字符串,他与其他语言无关