| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 面经整理--计算机网络 -> 正文阅读 |
|
[网络协议]面经整理--计算机网络 |
1.HTTP和HTTPS的区别首先,http是超文本传输协议,传输的数据都是未加密的,https则是具有安全性的ssl加密传输协议,因此,传输隐私数据的话,http更不安全。 其次,http和https使用的是完全不同的连接方式,http的连接很简单,是无状态的;https协议需要进行身份认证。 它们用的端口也不一样,http是80,https是443。 1.1 HTTPS的流程1.客户端向服务器发起HTTPS请求,连接到服务器的443端口。 ? 2.服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。 3.服务器将包含自己公钥的数字证书发送给客户端。 4.客户端收到服务器端的数字证书之后,会对数字证书进行检查,验证其合法性,如果发现发现数字证书有问题,那么HTTPS传输就无法继续。如果数字证书合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。 5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。 6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。 7.然后服务器将加密后的密文发送给客户端。 8.客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。 1.2 HTTPS的优缺点优点: (1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器; (2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。 (3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。 缺点: (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长,增加耗电; (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响; (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。 (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。 (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。 1.3 https为什么采用混合加密机制?一方面,第一阶段的非对称加密,保证了对称密钥的安全性;另一方面,第二阶段的对称加密,可以提高加密/解密处理的速度,提高数据传输的效率。 2.HTTP 请求的内容
3.关于token:1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。 2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。 3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。 4. get和post方法的区别
5. 交换机和路由器的区别1.工作层次不同:交换机工作在数据链路层,路由器工作在网络层 2.服务访问点不同:交换机根据MAC地址转发数据帧,路由器根据IP地址转发IP数据报 3.转发机制不完全相同:交换机分直通式交换机(直接转发)和存储转发式(存储转发)路由器则采用存储转发 4.交换机能分隔冲突域,但不能隔离广播域(但是用交换机实现的虚拟局域网VLAN可以隔离广播域)路由器可以隔离冲突域和广播域 5.交换机不能连接异构网络,而路由器可以 6.TCP和UDP区别1. 连接:TCP面向连接的传输层协议,即传输数据之前必须先建立好连接;UDP无连接。 2.服务对象:TCP点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。 3.可靠性:TCP可靠交付:无差错,不丢失,不重复,按序到达;UDP尽最大努力交付,不保证可靠交付。 4.拥塞控制/流量控制:有拥塞控制和流量控制保证数据传输的安全性;UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。 5.报文长度:TCP动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前网络拥塞情况决定的;UDP面向报文,不合并,不拆分,保留上面传下来报文的边界。 6.首部开销:TCP首部开销大,首部20~60个字节;UDP首部开销小,8字节(源端口,目的端口,数据长度,校验和)。 7. 适用场景: ??? TCP:当对网络通讯质量有要求时,比如HTTP、HTTPS、FTP等传输文件的协议, POP、SMTP等邮件传输的协议à对网络稳定性要求高。 UDP:对网络通讯质量要求不高时,要求网络通讯速度要快的场景。(如视频传输、实时通信等) 6.1 TCP优缺点??? 优点:可靠、稳定 ??? TCP的可靠体现在TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。 ??? 缺点:慢,效率低,占用系统资源高,易被攻击 ??? 在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接。然而,每个链接都会占用系统的CPU、内存等硬件资源。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被利用,实现DOS、DDOS、CC等攻击。 6.2 UDP优缺点??? 优点:快,比TCP稍安全 ??? UDP没有TCP拥有的各种机制,是一个无状态的传输协议,所以传递数据非常快,没有TCP的这些机制,被攻击利用的机制就少一些,但是也无法避免被攻击。 ??? 缺点:不可靠,不稳定 因为没有TCP的那些机制,UDP在传输数据时,如果网络质量不好,就会很容易丢包,造成数据的缺失。 6.3 可靠的UDP可通过应用层来实现。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。关键在于两点,从应用层角度考虑: (1)提供超时重传,能避免数据报丢失。 (2)提供确认序列号,可以对数据报进行确认和排序。 已经实现的可靠UDP:为数据提供了具有实时特征的端对端传送服务; ??? (1)RUDP 可靠数据报传输协议; ??? (2)RTP 实时传输协议 7.TCP可靠性机制TCP协议保证数据传输可靠性的方式主要有:校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制。 7.1 tcp的三次握手? 7.2为什么要有最后一次ACK??? 客户端首先向服务器发送一个连接请求,但是可能这个连接请求走了远路,等了很长时间,服务器都没有收到,那么客户端可能会再次发送,此时服务器端收到并且回复SYN、ACK;在这个时候最先发送的那个连接请求到达服务器,那么服务器会回复一个SYN,ACK;但是客户端表示自己已经收到确认了,并不搭理这个回复,那么服务器可能陷入等待,如果这种情况多了,那么会导致服务器瘫痪,所以要发送第三个确认。 7.3 tcp的四次挥手? 客户端:我不想玩了 服务器:好的我知道了 服务器:你可以走了 客户端:好的我走了 客户端发出请求后,并不意味着服务器都已经完成响应。所以当客户端请求断开时,并不能立即断开,还需要等待服务器那边处理妥当,再来通知你的确是可以断开了。 7.4 为什么要四次挥手TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当客户端发出FIN报文段时,只是表示客户端已经没有数据要发送了,客户端告诉服务器,它的数据已经全部发送完毕了;但是,这个时候客户端还是可以接受来自服务端的数据;当服务端返回ACK报文段时,表示它已经知道客户端没有数据发送了,但是服务端还是可以发送数据到客户端的;当服务端也发送了FIN报文段时,这个时候就表示服务端也没有数据要发送了,就会告诉客户端,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。 简单地说,前 2 次挥手用于客户端à服务端方向的数据通道,后两次挥手用于关闭服务端à客户端方向的数据通道。 7.4.1 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 假设网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。 7.4.2 如果已经建立了连接,但是客户端突然出现故障了怎么办? TCP设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。 7.5 TCP中的缓存有什么作用?每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。 TCP的发送缓冲区是用来缓存应用程序的数据,发送缓冲区的每个字节都有序列号,被应答确认的序列号对应的数据会从发送缓冲区删除掉。 write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情。???? TCP协议独立于 write()/send() 函数,数据有可能刚被写入缓冲区就发送到网络,也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,比如nagle算法,这取决于当时的网络情况、当前线程是否空闲等诸多因素,不由程序员控制。???? read()/recv() 函数也是如此,也从输入缓冲区中读取数据,而不是直接从网络中读取。 7.6 TCP是怎么控制流量的?所谓流量控制就是让发送发送速率不要过快,让接收方来得及接收。 TCP利用滑动窗口机制就可以实施流量控制。 原理就是运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方发回的窗口大小。考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。 ???? 解决这个问题,TCP为每一个连接设置一个持续计时器(persistence timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。 7.7 TCP拥塞控制解决方法TCP拥塞控制的四种算法:慢开始、拥塞避免、快重传、快恢复。 (1)慢开始算法:当主机开始发送数据时,并不清楚网络的负载情况,所以由小到大逐渐增大拥塞窗口,每经过一个传输轮次没有出现超时就将拥塞窗口加倍。同时还需要设置一个慢开始门限,在拥塞窗口小于慢开始门限时使用慢开始算法,大于慢开始门限时,使用拥塞避免算法; (2)拥塞避免算法:在拥塞窗口大于慢开始门限时,让拥塞窗口按线性规律缓慢增长。即每经过一个传输轮次,拥塞窗口增大一个MSS最大报文段尺寸。(拥塞避免并非完全能够避免拥塞,只是使网络比较不容易出现拥塞) (3)快重传算法:使发送方尽早知道发生了个别报文段丢失,并不是出现网络拥塞。 要求接受不要登塞自己发送数据时才进行捎带确认,而是立即发送确认,即使收到了失序的报文段也要立即发出对已收到报文段的重复确认。而发送方一旦受到三个连续的重读确认,就将相应的报文段立即重传。 (4)快恢复算法:发送方知道只有个别报文段丢失而不是网络拥塞时,不启动慢开始算法,而是执行快恢复算法,将慢开始门限和拥塞窗口值调整为当前窗口的一半,开始执行拥塞避免算法。 8.cookie和session8.1 cookieHTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。Cookie实际上是一小段的文本信息(key-value格式),由服务器产生,发送给客户端,并在客户端保存,用于辨认用户的状态。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。 Cookie的机制: 当用户第一次访问并登陆一个网站的时候,cookie的设置以及发送会经历以下4个步骤: 客户端发送一个请求到服务器 à 服务器发送一个HttpResponse响应到客户端,其中包含Set-Cookie的头部 à 客户端保存cookie,之后向服务器发送请求时,HttpRequest请求中会包含一个Cookie的头部 à服务器返回响应数据 Cookie的属性:
修改或者删除Cookie HttpServletResponse提供的Cookie操作只有一个addCookie(Cookie cookie),所以想要修改Cookie只能使用一个同名的Cookie来覆盖原先的Cookie。如果要删除某个Cookie,则只需要新建一个同名的Cookie,并将maxAge设置为0,并覆盖原来的Cookie即可。 新建的Cookie,除了value、maxAge之外的属性,比如name、path、domain都必须与原来的一致才能达到修改或者删除的效果。否则,浏览器将视为两个不同的Cookie不予覆盖。 值得注意的是,从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name和value属性,maxAge属性只被浏览器用来判断Cookie是否过期,而不能用服务端来判断。 我们无法在服务端通过cookie.getMaxAge()来判断该cookie是否过期,maxAge只是一个只读属性,值永远为-1。当cookie过期时,浏览器在与后台交互时会自动筛选过期cookie,过期了的cookie就不会被携带了。 Cookie的域名 Cookie是不可以跨域名的,隐私安全机制禁止网站非法获取其他网站的Cookie。 正常情况下,同一个一级域名下的两个二级域名也不能交互使用Cookie,比如test1.mcrwayfun.com和test2.mcrwayfun.com,因为二者的域名不完全相同。如果想要mcrwayfun.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数为.mcrwayfun.com,这样使用test1.mcrwayfun.com和test2.mcrwayfun.com就能访问同一个cookie Cookie的路径 path属性决定允许访问Cookie的路径。比如,设置为"/"表示允许所有路径都可以使用Cookie 8.2 sessionSession与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。 ?????? session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 ??? 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识(session id),如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。 ??? 保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。 由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为: http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 另一种是作为查询字符串附加在URL后面,表现形式为: http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。 为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。 误解:浏览器一关,session就消失了 ?????? 只是因为大多时候,session id存放在临时cookie中,浏览器一关,session id就丢失了,找不回来,但如果将session id存放在生存期较久的cookie中,只要cookie没过生存期,就能找到session。 ?????? 由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。 吗 8.3 cookie与session的区别
9. 响应状态码1xx:信息响应:信息响应表明请求已被接收并理解。仅在与 HTTP 服务器沟通时使用。 2xx:成功 ??200 OK? 3xx:重定向 ??表明:客户端需要做些额外工作才能得到所需要的资源 4xx: 客户端错误 ?404 Not Found? 5xx: 服务器端错误 10.网络模型
?
? 11. 客户端发送给服务器的请求,怎么确定具体的协议?客户端发送给服务器端的请求,可以根据URL来确定具体使用的协议。一个完整的URL包括–协议部分、网址、文件地址部分。协议部分以//为分隔符,在interner中,我们可以使用多种协议: HTTP——HyperText Transfer Protocol(超文本传输协议) ??? FTP——File Transfer Protocol(文件传输协议) ??? Gopher——The Internet Gopher Protocol(网际Gopher协议) ??? File——本地文件传输协议 ??? HTTPS——安全套接字层超文本传输协议(http的安全版) ??? 例如百度网址:http://baidu.com,可以看出使用的是http协议。 12.关于端口号端口号:用来标识应用进程。 长度:16Bit;也就是能够标识2^16个不同的端口号。 端口号根据端口范围分为2类。 1.服务端使用的端口号(熟知端口号数值范围:0-1023;登记端口号数值范围:1024-49151)2.客户端使用的端口号(数值范围为49152-65535)。 常见端口号如下: ????? FTP:21、TELNET:23、SMTP:25、DNS:53、TFTP:69、HTTP:80、SNMP:161 13.流量控制和拥塞控制
两者的区别: 1.流量控制是为了预防拥塞。如:在马路上行车,交警跟红绿灯是流量控制,当发生拥塞时,如何进行疏散,是拥塞控制。 2.流量控制:点对点通信量的控制。 拥塞控制:全局性的,涉及到所有的主机和降低网络性能的因素。 14. 应用层报文怎么传输到另一个应用层?应用层数据(报文)向外发送时,数据是由最上面的应用层向下经过一层层封装后发送给物理层;而接收数据时,数据是由物理层向上经过一层层解封后发给应用层。 ? ? 举例:A-->B: A:网络层à传输层(添加TCP报头:端口号)à网络层(添加IP地址)à数据链路层(MAC地址(ARP协议))à物理层(bits流)??? à? B:物理层à数据链路层(比较MAC地址)à网络层(比较IP地址)à传输层(分析端口号)à应用层 15.关于IP地址? A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。 B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。 C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。 D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户 。 E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。 16. IPV4和IPV6的区别IPv4和IPv6是是目前使用的两种Internet协议版本,IPv4和IPv6协议之间存在各种差异,包括它们的功能,但关键的一点是它生成的地址(地址空间)的数量的区别。
17. DNS寻址的过程? 1.首先客户端位置是一台电脑或手机,在打开浏览器以后,比如输入http://www.zdns.cn的域名,它首先是由浏览器发起一个DNS解析请求,如果本地缓存服务器中找不到结果,则首先会向根服务器查询,根服务器里面记录的都是各个顶级域所在的服务器的位置,当向根服务器请求http://www.zdns.cn的时候,根服务器就会返回.cn服务器的位置信息; 2.递归服务器拿到.cn的权威服务器地址以后,就会寻问.cn的权威服务器,知不知道http://www.zdns.cn的位置。这个时候.cn权威服务器查找并返回http://zdns.cn服务器的地址; 3.继续向http://zdns.cn的权威服务器去查询这个地址,由http://zdns.cn的服务器给出了地址:202.173.11.10; 4.最终进入http的链接,顺利访问网站; 补充说明:一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存了,这个时候就直接把http://www.zdns.cn的记录返回给客户端就可以了。 18. socket通信的具体步骤sockets(套接字)编程有三种:流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。 服务器端编程的步骤: (1)加载套接字库,创建套接字(WSAStartup()/socket()); (2)绑定套接字到一个IP地址和一个端口上(bind()); (3)将套接字设置为监听模式等待连接请求(listen()); (4)请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept()); (5)用返回的套接字和客户端进行通信(send()/recv()); (6)返回,等待另一连接请求; (7)关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。 客户端编程的步骤: (1)加载套接字库,创建套接字(WSAStartup()/socket()); (2)向服务器发出连接请求(connect()); (3)和服务器端进行通信(send()/recv()); (4)关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。? 19. 路由协议? ?? 路由协议主要运行于路由器上,路由协议是用来确定到达路径的,起到一个地图导航,负责找路的作用。RIP 、IGRP 、EIGRP 、OSPF 、IS-IS 、BGP (1)RIP(路由信息协议) ??? RIP很早就被用在Internet上,是最简单的路由协议。它是“路由信息协议(Route Information Protocol)”的简写,主要传递路由信息,通过每隔30秒广播一次路由表,维护相邻路由器的位置关系,同时根据收到的路由表信息计算自己的路由表信息。RIP是一个距离矢量路由协议,最大跳数为15跳,超过15跳的网络则认为目标网络不可达。此协议通常用在网络架构较为简单的小型网络环境。分为RIPv1和RIPv2两个版本,后者支持VLSM技术以及一系列技术上的改进。RIP的收敛速度较慢。 (2)IGRP(内部网关路由协议) ??? IGRP协议是“内部网关路由协议(Interior Gateway Routing Protocol)”的缩写,由Cisco于二十世纪八十年代独立开发,属于Cisco私有协议。IGRP和RIP一样,同属距离矢量路由协议,因此在诸多方面有着相似点,如IGRP也是周期性的广播路由表,也存在最大跳数(默认为100跳,达到或超过100跳则认为目标网络不可达)。IGRP最大的特点是使用了混合度量值,同时考虑了链路的带宽、延迟、负载、MTU、可靠性5个方面来计算路由的度量值,而不像其他IGP协议单纯的考虑某一个方面来计算度量值。IGRP已经被Cisco独立开发的EIGRP协议所取代,版本号为12.3及其以上的Cisco IOS(Internetwork Operating System)已经不支持该协议,已经罕有运行IGRP协议的网络。 (3)EIGRP(增强型内部网关路由协议) ??? 由于IGRP协议的种种缺陷以及不足,Cisco开发了EIGRP协议(增强型内部网关路由协议)来取代IGRP协议。EIGRP属于高级距离矢量路由协议(又称混合型路由协议),继承了IGRP的混合度量值,最大特点在于引入了非等价负载均衡技术,并拥有极快的收敛速度。EIGRP协议在Cisco设备网络环境中广泛部署。 (4)OSPF(开放式最短路径优先) ??? OSPF协议是“开放式最短路径优先(Open Shortest Path First)”的缩写,属于链路状态路由协议。OSPF提出了“区域(area)”的概念,每个区域中所有路由器维护着一个相同的链路状态数据库(LSDB)。区域又分为骨干区域(骨干区域的编号必须为0)和非骨干区域(非0编号区域),如果一个运行OSPF的网络只存在单一区域,则该区域可以是骨干区域或者非骨干区域。如果该网络存在多个区域,那么必须存在骨干区域,并且所有非骨干区域必须和骨干区域直接相连。OSPF利用所维护的链路状态数据库,通过最短路径优先算法(SPF算法)计算得到路由表。OSPF的收敛速度较快。由于其特有的开放性以及良好的扩展性,OSPF协议在各种网络中广泛部署。 (5)IS-IS(中间系统到中间系统) ??? IS-IS协议是Intermediate system to intermediate system(中间系统到中间系统)的缩写,属于链路状态路由协议。标准IS-IS协议是由国际标准化组织制定的ISO/IEC 10589:2002所定义的,标准IS-IS不适合用于IP网络,因此IETF制定了适用于IP网络的集成化IS-IS协议(Integrated IS-IS)。和OSPF相同,IS-IS也使用了“区域”的概念,同样也维护着一份链路状态数据库,通过最短生成树算法(SPF)计算出最佳路径。IS-IS的收敛速度较快。集成化IS-IS协议是ISP骨干网上最常用的IGP协议。 (6)BGP(边界网关协议) ??? 为了维护各个ISP的独立利益,标准化组织制定了ISP间的路由协议BGP。BGP是“边界网关协议(Border Gateway Protocol)”的缩写,处理各ISP之间的路由传递。但是BGP运行在相对核心的地位,需要用户对网络的结构有相当的了解,否则可能会造成较大损失。 20. 单工、双工、半双工的通信方式单工:数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信。举例:电视,广播。 半双工:半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。 双工:全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信。举例:电话通信。 参考: ????????【Java工程师面试宝典】学习说明_互联网校招面试真题面经汇总_牛客网 ? ? ? ? ??HTTP 方法:GET 对比 POST | 菜鸟教程 ? ? ? ? ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:41:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |