1、三次握手

image.png

那么三次握手到底是怎么实现的呢,首先我们要了解一个概念TCP报文中的TCP标志位。tcp标志位,有6种标示:

SYN(synchronous同步) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

还有报文中的2个重要字段Sequence number(序列号) Acknowledge number(确认号)

Sequence number是数据包本身的序列号;Acknowledge number是期望对方继续发送的那个确认数据包的序列号(sequence number+1)。

第一次握手:

client向server发送一个请求数据包,SYN=1,sequence number=J(随机产生的数字序列),此时client进入SYN_SEND发送状态

第二次握手:

server接收到client发送的数据包,根据SYN=1确认client想建立连接,故向client发送一个确认数据包,SYN=1,ACK=1(表示acknowledge number有效),acknowledge number=J+1(表示确认),sequence number=K,此时server进入SYN_RCVD接收状态

第三次握手:

client接收到server发送的数据包,根据ACK=1和acknowledge number=J+1得知server同意建立连接。向server发送确认数据包,ACK=1,acknowledge number = K+1,server接收到数据包后,确认ACK=1,acknowledge number=K+1,确认建立连接,然后TCP连接完成,进入ESTABLISHED状态

SYN攻击:

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击是一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:

'#netstat -nap | grep SYN_RECV

2、四次挥手

image.png

由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

(1)第一次挥手:Client发送一个FIN=1,fin=J,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到FIN后,发送一个ACK=J+1给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

(3)第三次挥手:Server发送一个FIN=1,fin=K,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK=K+1给Server,确认序号为收到序号+1,Server进入CLOSED状态,client进入TIME_WAIT状态,完成四次挥手。

image.png

3、为什么连接需要三次,断开需要四次

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

4、**TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗? **

答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。

(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。

(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

(3)采用两次握手不行,原因就是上面说的实效的连接请求的特殊情况。

5、为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

最后一个ACK有可能丢失,TIME_WAIT状态就是用来重发可能丢失的ACK报文。

6、协议

**OSI,TCP/IP,五层协议的体系结构,以及各层协议**

**OSI分层(7层)**:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

**TCP/IP分层(4层)**:网络接口层、 网际层、运输层、 应用层。

**五层协议(5层)**:物理层、数据链路层、网络层、运输层、 应用层。

OSI七层协议

物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)

数据链路层:将比特组装成帧和点到点的传递(帧Frame)

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)

会话层:建立、管理和终止会话(会话协议数据单元SPDU)

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

****每一层的协议如下:

物理层: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

各种协议

** ICMP协议: **因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

** TFTP协议: **是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

** HTTP协议: **超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

** DHCP协议: **动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。

NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,

DHCP协议:一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

TCP与UDP的区别

TCP传输控制协议提供面向连接的、可靠的数据流传输,而UDP用户数据报协议提供的是非面向连接的、不可靠的数据流传输。

TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。

TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

TCP对应的协议和UDP对应的协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3)** TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69**上使用UDP服务。

7、ARP是地址解析协议,简单语言解释一下工作原理。 **

1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机** ** IP地址,源主机MAC地址,目的主机的IP ** 地址。

3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

广播发送ARP请求,单播发送ARP响应。

描述:RARP

RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

8、IP地址

IP地址的分类

A类地址:以0开头, 第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);

B类地址:以10开头, 第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);

C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);

IP地址与子网掩码相与得到主机号

特殊的网址

每一个字节都为0的地址(“0.0.0.0”)对应于当前[主机]

IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的[广播地址]

IP地址中凡是以“1110”开头的[E类IP地址]都保留用于将来和实验使用。

IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:[127.0.0.1]可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。

网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。

9、在浏览器中输入www.baidu.com后执行的全部过程

1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。

2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

10、DNS域名系统,简单描述其工作原理。 **

当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

11、面向连接和非面向连接的服务的特点是什么?**

面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。

12、交换机与路由器有什么区别?

①工作所处的OSI层次不一样,交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层网络层

②寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址

③转发速不同:交换机的转发速度快,路由器转发速度相对较慢。

13、网桥的作用?

网桥是一个局域网与另一个局域网之间建立连接的桥梁

14、在浏览器中输入网址后执行的全部过程

1.查找域名对应的IP地址。这一步会依次查找浏览器缓存,系统缓存,路由器缓存,ISPNDS缓存,根域名服务器。

2.向IP对应的服务器发送请求。

3.服务器响应请求,发回网页内容。

4.浏览器解析网页内容。

由于网页可能有重定向,或者嵌入了图片,AJAX,其它子网页等等,这4个步骤可能反复进行多次才能将最终页面展示给用户。

计算机网络sequence number,计算机网络相关推荐

  1. 计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe

    Sequence Number lzyws7393074532892018-04-25 Number Sequence qq_391789932452017-09-21 理解TCP序列号(Sequen ...

  2. 计算机网络笔记--1 计算机网络与网络应用(上)

    计算机网络笔记–1 计算机网络与网络应用(上) 文章目录 计算机网络笔记--1 计算机网络与网络应用(上) 前言 1.1初识计算机网络 1.2计算机网络结构 1.3网络核心 1.4计算机网络性能 1. ...

  3. 计算机网络分为两大阶段,【多选题】计算机网络的发展分为哪些阶段?() A. 远程终端联机阶段 B. 计算机网络阶段 C. 计算机网络互联阶段 D. 信息高速公路阶段...

    [多选题]计算机网络的发展分为哪些阶段?() A. 远程终端联机阶段 B. 计算机网络阶段 C. 计算机网络互联阶段 D. 信息高速公路阶段 更多相关问题 冰箱要定期清洗,清洗冰箱应用无腐蚀的消洁剂稀 ...

  4. sqlalchemy.exc.InternalError: (pymysql.err.InternalError) Packet sequence number wrong - got 40 expe

    sqlalchemy.exc.InternalError: (pymysql.err.InternalError) Packet sequence number wrong - got 40 expe ...

  5. python pymysql 多线程 读写数据库 报错 Packet sequence number wrong

    多线程连接数据,提交增改查请求,爆出Packet sequence number wrong - got 7 expected 2(数据包序列号错误) 原因:这是因为多线程共享了同一个数据库连接,但每 ...

  6. B站王道论坛计算机网络,成都理工大学计算机网络考研学长经验分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 成理计算机网络考研学长经验 随着计算机(软件工程)报考热,学校为了有区分度,根据学校规划2021年简章将计算机科学与技术(学硕)和电子信息(专硕)专业课从 ...

  7. 理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)

    原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ from:ht ...

  8. 【计算机网络】计算机网络 OSI 参考模型 ( 计算机网络分层结构 | OSI 七层参考模型 | 应用层 | 表示层 | 会话层 | 传输层 | 网络层 | 数据链路层 | 物理层 )

    文章目录 一.计算机网络分层结构 二.OSI 七层参考模型 三.应用层 四.表示层 五.会话层 六.传输层 七.网络层 八.数据链路层 九.物理层 一.计算机网络分层结构 计算机网络分层结构 : ① ...

  9. 计算机网络知识点1——计算机网络概述

    什么是计算机网络? 计算机网络=通信技术+计算机技术 计算机网络是通信技术与计算机技术紧密结合的产物 计算机网络就是一种通信网络 计算机网络的定义:计算机网络就是互连的.自治的计算机集合. 自治-无主 ...

  10. ORA-02287: sequence number not allowed here

    http://devbbs.doit.com.cn/thread-11269-1-1.html http://zsjg13.iteye.com/blog/737677 当插入值需要从另外一张表中检索得 ...

最新文章

  1. HarmonyOS Java工程目录结构
  2. 【转】清理Visual Studio打开的项目和文件、查找和最近引用组件痕迹
  3. android保持服务不休眠,Android开发保持屏幕常亮和CPU不休眠唤醒状态
  4. 前端学习(1331):mongoose第三方模块
  5. T-SQL 视图 事物 备份还原 分离附加
  6. 二、信号分解 —> 变分模态分解(VMD)学习笔记
  7. exe变计算机病毒,文件夹变exe病毒怎么恢复 文件夹exe病毒的解决方法
  8. AI中去掉剪切蒙版中的多余部分
  9. web视频(点播/直播)播放器选型
  10. Android开发之最新Android Studio推送代码到最新GitHub教程 | Android Studio绑定GitHub | AS令牌登录GitHub | 创建GitHub令牌
  11. 分享一款CHROME极速下载管理器插件
  12. 数学建模微分方程导弹问题matlab求解,Matlab建模—导弹追踪问题
  13. Luminati怎么玩,为用户解决什么问题?
  14. 眼疾手快,真男人就来合成粽子三兄弟
  15. 计算机英语性考任务答案,国家开放大学(中央电大)本科《理工英语4》网上形考任务试题及答案...
  16. 【职业女性着装全攻略】_职业女性应该怎样着装
  17. C语言数组求和与求平均值例题
  18. 怎么划分领域、子域、核心域、通用域和支撑域
  19. JVM内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)
  20. 浪潮ERP GS 6.0安装教程

热门文章

  1. GWR4 软件输入数据制作
  2. java sql小区物业管理系统_小区物业管理系统javasql.doc
  3. 破解vysor为专业版
  4. 047ssm在线视频教育网站源码
  5. C 语言中 bzero()函数的使用
  6. ios 图片逆时针旋转_iOS 图片旋转方法实例代码
  7. 华为资深工程师总结的这本435页的书,居然把网络协议给趣谈了
  8. 使用一键重装工具制作U盘启动盘失败的解决方法
  9. 网页设计个人主页代码
  10. Proteus安装图文教程