zoukankan      html  css  js  c++  java
  • 计算机网络

    1.TCP协议在数据传输过程中收发双方如何保证数据包的可靠性的?

    答:

    (1)       为了保证数据包的可靠传递,把已发送的数据包保留在缓冲区。

    (2)       为每个已发送的数据包启动一个超时定时器。

    (3)       如果收到接收方发送的确认,则释放该数据包的缓冲区。否则,进行数据包的重传或者重传次数达到最大的次数为止。

    UDP用校验和字段用来保证UDP数据包的完整性。

    2.TCP协议与UDP协议的区别

    答:

    (1)       TCP是面向连接的,UDP是无连接的。

    (2)       TCP是安全可靠的,UDP是不可靠的。

    (3)       TCP需要的系统资源比UDP多。

    (4)       UDP程序结构简单,传输速度快。

    (5)       具体编程的时候也有不同。

    3.进程和线程的区别

    答:

    (1)       进程是系统进行资源分配和调度的基本单位,线程是CPU调度和分配的基本单位。

    (2)       线程是进程的实体,基本不拥有系统资源,仅需一些必不可少的资

    源(程序计数器,堆栈等),同一进程的多个线程共享该进程的全部资源。

    (3)       一个线程可以创建和撤销另一个线程,同一进程的多个线程之间可以并发执行。

    4.TCP/IP协议中三次握手建立连接,四次挥手释放连接

    答:

    确认ack:期待收到下一个报文段的第一个数据字节的序号。

    确认ACK:仅当ACK=1时,确认字段才有效,ACK=0,确认号无效。

    同步SYN:连接建立用同步序号,当SYN=1,ACK=0表示这是一个连接请求报文段。SYN=1,ACK=1,响应报文。

    终止FIN:用来释放一个连接,FIN=1表示,报文段的发送方的数据已经发送完毕,并要求释放连接。

    第一次握手:客户端发送SYN=1,seq=x报文给服务器;

    第二次握手:服务器发送,ACK=1,ack=x+1,SYN=1,seq=y报文给客户端;

    第三次握手:客户端发送,ACK=1,ack=y+1,seq=x+1报文给客户端。正式建立连接

    Q:为什么需要第三次握手才建立连接

    A:这是为了防止已经失效的连接请求报文段突然传到了服务器,因而产生了错误。

    四次挥手:

    (1)       客户端发送FIN=1,seq=u报文给服务器;

    (2)       服务器发送ACK=1,seq=v,ack=u+1确认报文给客户端,进入CLOSE-WAIT关闭等待状态;

    (3)       此时TCP服务器进程通知高层应用进程,客户端和服务器的连接释放了。此时是半关闭状态,只能服务器发送报文给客户端。服务器发送给客户端连接释放报文段,等待确认。FIN=1,ACK=1,seq=w,ack=u+1

    (4)       客户端发送确认之后,进入TIME-WAIT状态,服务器收到确认后,就进入CLOSED状态。此时TCP连接还没有释放掉,经过时间等待2MSL之后,进入CLOSED状态。

    ACK=1,seq=u+1,ack=w+1

    Q:为什么要等待?

    A:(1)为了保证客户端发送的最后一个ACK报文段能够到达服务器。

      (2)防止“已失效的连接请求报文段”出现在连接中。

    服务器段结束TCP连接的时间比客户端早,因为服务器收到确认就断开连接,而客户端还等待2MSL。

    5.滑动窗口协议是解决传输效率和流量控制问题(通过设置发送窗口的滑动窗口的大小)的。

    6.IP地址

    IP地址分类:

    (1)       A类地址网络号1字节,主机号3字节,网络号以0开头。

    (2)       B类地址网络号2字节,主机号2字节,网络号以10开头。

    (3)       C类地址网络号3字节,主机号1字节,网络号以110开头。

    私有地址:

    (1)       A类:10.0.0.0—10.255.255.255

    (2)       B类:172.16.0.0—172.31.255.255

    (3)       C类:192.168.0.0—192.168.255.255

    7.UDP协议通讯的时候怎么样得知目标机是否获得了数据包?

    可以在每个数据包中插入一个唯一的ID,比如timestamp或者递增的int,发送方在发送数据时将此ID和发送时间记录在本地,接收方在收到数据后将ID发给发送方作为回应。发送方收到回应,则知道接收方收到相应的数据包。否则,数据包可能丢失。重复发送,直到对方收到。

    8.同步通信和异步通信的区别

    (1)       同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔在发送下一个字节。

    (2)       同步通信效率高;异步通信效率较低。

    (3)       同步通信较为复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。

    (4)       同步通信可用于点对多点;异步通信只适用于点对点。

    9.进程之间通信的方式有哪些?

    信号、信号量、消息队列、共享内存

    10.浏览器输入一个网址,会发生什么?

    (1)       浏览器查找域名的IP地址

    (2)       浏览器给web服务器发送一个HTTP请求

    (3)       服务的永久重定向响应

    (4)       浏览器跟踪重定向地址

    (5)       服务器处理请求

    (6)       服务器发回一个HTML响应

    (7)       浏览器开始显示HTML

    (8)       浏览器发送获取嵌入在HTML中的对象

    用户输入网址,经过DNS服务器,找到服务器主机,向服务器发送一个请求,服务器经过解析之后,发送给用户浏览器HTML等文件,然后浏览器进行解析。

    11.http协议

    (1)       http是一个属于应用层的面向对象的协议

    (2)       http请求由三部分组成,分布是:请求行、消息报头、请求正文

    (3)       常见的状态代码

    200 OK 400bad request 401unauthorized 403forbidden 404Not Found

    500 Internal Server Error 503 Server Unavailable

  • 相关阅读:
    编程之美--2.13
    编程之美--2.17
    编程之美--3.8
    编程之美--3.7
    面试金典--9.3
    面试金典--9.2
    面试金典--9.1
    jq插件
    laravel controller
    laravel 登录验证
  • 原文地址:https://www.cnblogs.com/xiaolei-meow/p/6582320.html
Copyright © 2011-2022 走看看