网络技术(TCP/IP)问题

Q:OSI七层网络模型

A:OSI(Open System Interconnect),即开放式系统互联,(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)

  • 为什么TCP建立连接需要三次握手,而断开连接需要四次挥手?
    因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
  • TIME_WAIT的意义,为什么等于2MSL
    MSL是最长报文段寿命,设置的目的是:
  • 保证A发送的最后一个ACK能够到达B
  • 防止已失效的报文段出现在本连接中
  • ==TCP头部校验的原理,安全吗,可以仿造吗==
    TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。
    可以仿造。
  • TCP、UDP的区别?服务器和客户端建立的过程?
    TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能顺序地从一端传到另一端。
    UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,不保证数据按顺序传递,故而传输速度很快。
UDP编程的服务器端一般步骤
  1. 创建一个socket,用函数socket();
  2. 设置socket属性,用函数setsockopt();* 可选
  3. 绑定IP地址、端口等信息到socket上,用函数bind();
  4. 循环接收数据,用函数recvfrom();
  5. 关闭网络连接;
UDP编程的客户端一般步骤是
  1. 创建一个socket,用函数socket();
  2. 设置socket属性,用函数setsockopt();* 可选
  3. 绑定IP地址、端口等信息到socket上,用函数bind();* 可选
  4. 设置对方的IP地址和端口等属性;
  5. 发送数据,用函数sendto();
  6. 关闭网络连接;
TCP编程的服务器端一般步骤是
  1. 创建一个socket,用函数socket();
  2. 设置socket属性,用函数setsockopt(); * 可选
  3. 绑定IP地址、端口等信息到socket上,用函数bind();
  4. 开启监听,用函数listen();
  5. 接收客户端上来的连接,用函数accept();
  6. 收发数据,用函数send()和recv(),或者read()和write();
  7. 关闭网络连接;
  8. 关闭监听.
TCP编程的客户端一般步骤是
  1. 创建一个socket,用函数socket();
  2. 设置socket属性,用函数setsockopt();* 可选
  3. 绑定IP地址、端口等信息到socket上,用函数bind();* 可选
  4. 设置要连接的对方的IP地址和端口等属性;
  5. 连接服务器,用函数connect();
  6. 收发数据,用函数send()和recv(),或者read()和write();
  7. 关闭网络连接.
  • socket中的close是一次就关闭的吗?半关闭状态是怎么产生的?
    不是,当A发送给B控制FIN的时候,A到B这个方向的连接就关闭了,这个时候处于半关闭的状态,但是B到A这个方向的连接并没有关闭,因为B要等到将数据全部发送完毕之后才会发送FIN给A。
  • TCP拥塞控制
    重点掌握慢开始、拥塞避免、快重传、快恢复。
  • TCP流量控制,采用滑动窗口会用什么问题?
    流量控制是为了让发送方的发送速率不要太快,要让接收方来得及接收。
    Nagle算法:①当发送方首都哦啊哦对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到到达的数据进行缓存。②当到达的数据已达到发送窗口大小的一半或已达到报文段的长度的时候就立即发送一个报文段。
    糊涂窗口综合征:就是由于发送端和接收端上的处理不一致,导致网络上产生很多的小包,结果报文段包含了一个大大的头部,携带数据很少。数据传输效率低。处理方法是等待窗口大小满足一定的条件之后(能够接收一个最大报文,或者缓冲区的一半),再来发送窗口通告,这样就不会产生小报文。
    滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。然而,它只能在源端设备和目的端设备起作用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起作用。
  • 拥塞控制和流量控制的区别?
  • 拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不会过载
  • 流量控制往往是点对点通信量的控制,是一个端到端的问题,流量控制要做的是抑制发送端发送数据的速率,以便接收端来得及接收。
  • TCP怎么保证可靠性?
  • 应用数据被分割成TCP认为最适合发送的数据块
  • 超时重传:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段
  • TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层
  • 校验和:TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段
  • TCP的接收端会丢弃重复的数据
  • 流量控制:让发送方的发送速率不要太快,要让接收方来得及接收
  • 拥塞控制:当网络拥塞时,减少数据的发送
  • TCP滑动窗口协议
  • “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”
  • “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”
  • http协议与TCP协议的联系
    TPC协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
    Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。
  • http/1.0和http/1.1的区别?
  • http1.1提供永久性连接,即1.0使用非持久连接
  • http1.1增加host头
  • http1.1还提供了身份认证,状态管理和cache缓存机制等相关的请求头和响应头。
  • http请求方法有哪些?get和post的区别
  • OPTIONS
    返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
  • HEAD
    向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
  • GET
    向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
  • POST
    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
  • PUT
    向指定资源位置上传其最新内容
  • DELETE
    请求服务器删除Request-URL所标识的资源
  • TRACE
    回显服务器收到的请求,主要用于测试或诊断
  • CONNECT
    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
(1)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的
(2)根据HTTP规范,POST表示可能修改变服务器上的资源的请求
  • http状态码
  • http和https的区别?由http升级到https需要哪些操作?
    HTTP 指的是超文本传输协议,https 指的是超文本传输安全协议。HTTPS 就是将 HTTP 中的传输内容进行了加密,然后通过可靠的连接,传输到对方的机器上。加密的协议是 TLS,其前身是 SSL。
  • https具体怎么实现?,怎么确保安全性?
  • http中浏览器一个URL的流程,这个过程中浏览器做些什么,URL包括哪三个部分?
  • 浏览器向DNS服务器查找输入URL对应的IP地址。
  • DNS服务器返回网站的IP地址。
  • 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接
  • 浏览器获取请求页面的html代码。
  • 浏览器在显示窗口内渲染HTML。
  • 窗口关闭时,浏览器终止与服务器的连接。
    URL包括:①协议(或称为服务方式);②存有该资源的主机IP地址(有时也包括端口号);③主机资源的具体地址,如目录和文件名等。
  • http四个会话过程?
  • 建立tcp连接
  • 发出请求文档
  • 发出响应文档
  • 释放tcp连接
  • 网页解析的过程
  • ==一个机器能使用的端口号上限是多少?为什么?可以改变吗?如果想要用的端口超过这个限制怎么办?==
    端口号最多是65535个,端口号2个字节,16位,所以最大表示65535.不能改变
  • 对称加密和非对称加密
    对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。
    非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
  • 数字证书的了解(高频)
  • 客户端为什么信任第三方证书?
  • RSA加密算法,MD5原理
  • 单条记录高并发访问的优化
  • 介绍一下ping的过程,分别用到了那些协议?
    ping用来测试两台主机之间的连通性。ICMP协议
  • TCP/IP分片粘包过程
  • 正常情况:如果Socket Client 发送的数据包,在Socket Server端也是一个一个完整接收的,那个就不会出现粘包和分包情况,数据正常读取。
  • 粘包情况:Socket Client发送的数据包,在客户端发送和服务器接收的情况下都有可能发送,因为客户端发送的数据都是发送的一个缓冲buffer,然后由缓冲buffer最后刷到数据链路层的,那么就有可能把数据包2的一部分数据结合数据包1的全部被一起发送出去了,这样在服务器端就有可能出现这样的情况,导致读取的数据包包含了数据包2的一部分数据,这就产生粘包,当然也有可能把数据包1和数据包2全部读取出来。
  • 分包情况:意思就是把数据包2或者数据包1都有可能被分开一部分发送出去,接着发另外的部分,在服务器端有可能一次读取操作只读到一个完整数据包的一部分。
  • 在数据包发送的情况下,有可能后面的数据包分开成2个或者多个,但是最前面的部分包,黏住在前面的一个完整或者部分包的后面,也就是粘包和分包同时产生了。
  • 有没有抓过TCP包,描述一下
  • ==一个IP配置多个域名,靠什么识别?==
    主机头
  • 路由器的工作原理和作用,交换机的工作原理和作用
  • 对路由协议的了解与介绍。内部网关协议IGP包括RIP,OSPF和外网网关协议EGP和BGP
  • 路由协议使用的算法
  • 服务器攻击(DDos攻击)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值