文本描述
网络编程面试题
目录
3.1 TCP UDP
3.1.1 TCP、UDP的区别 ?????
3.1.2 TCP、UDP的优缺点???
3.1.3 TCP UDP适用场景???
3.1.4 TCP为什么是可靠连接????
3.1.5典型网络模型,简单说说有哪些;???
3.1.6 Http1.1和Http1.0的区别???
3.1.7 URI(统一资源标识符)和URL(统一资源定位符)之间的区别??
3.2 三次握手、四次挥手
3.2.1什么是三次握手?????
3.2.2为什么三次握手中客户端还要发送一次确认呢?可以二次握手吗?????
3.2.3为什么服务端易受到SYN攻击?????
3.2.4什么是四次挥手?????
3.2.5为什么客户端最后还要等待2MSL?????
3.2.6为什么建立连接是三次握手,关闭连接确是四次挥手呢?????
答案
3.1.1 TCP、UDP的区别
解析:TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
总结为以下几点:
1)TCP是面向连接的,UDP是面向无连接的
2)UDP程序结构较简单
3)TCP是面向字节流的,UDP是基于数据报的
4)TCP保证数据正确性,UDP可能丢包
5)TCP保证数据顺序,UDP不保证
3.1.2 TCP、UDP的优缺点
TCP优点:传输可靠稳定 缺点:速度慢,效率低,易背攻击
场景:对网络质量有要求的,文件传输
UDP优点:快,比TCP稍微安全 缺点:不可靠不稳定
场景:对网络质量要求不高的,对速度要求高的场景
3.1.4 TCP为什么是可靠连接
答:因为tcp传输的数据满足3大条件,不丢失,不重复,按顺序到达,
TCP协议保证数据传输可靠性的方式主要有:
校验和
序列号
确认应答
超时重传
连接管理
流量控制
拥塞控制
3.1.5典型网络模型,简单说说有哪些;
7层:物理层、链路层、网络层、传输层、会话层(5层模型没有),表示层(5层模型没有),应用层
3.2.1什么是三次握手?????
首先客户端给服务器请求连接,发送数据包,SYN=1,随机产生值seq=x;
服务器接到数据包后,同意连接,将SYN=1,ACK=1,ack=x+1,随机产生值seq=y,发送数据报给客户端
客户端接收到数据包,检查是否是ACK=1,ack=x+1,如果是,发送ACK=1,seq=x+1,ack=y+1。server检查到数据包,诚公监理连接
Server第二次握手将ACK置一,且进行资源分配
Client第三次握手且进行资源分配
3.2.2为什么三次握手中客户端还要发送一次确认呢?可以二次握手吗?
主要为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误
防止发生死锁
3.2.4什么是四次挥手
一:客户端发出连接释放信号,FIN=1,序列u(等于上一个序列加一)
二:服务器收到信号,发送确认保温,ACK=1,SEq=v,ack=u+1
三:数据传输完后,服务器发送连接释放信号,FIN=1,ACK1,SEQ=W,ack=u+1
四:客户端接收到信号,发出确认ACK=1,SEQ=U+1,ACK=W+1