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