1:TCP和UDP的区别
(1)TCP是面向连接的(打电话),UDP我无连接的(发短信)
(2)TCP提供可靠服务,通过TCP传输的数据无差错,不丢失,不重复,且按序达到。UDP尽最大可能交付。
(3)TCP是面向字节流。UDP面向报文,没有阻塞控制,因此网络出现拥塞不会使源主机发送速率降低。
(4)TCp链接只能是点到点的。UDP支持一对一,一对多,多对一,多对多的交互通信。
(5)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
(6)TCP首部开销20字节,UDP8字节。
2:TCP可靠,那些方法保证可靠
(1)确认和重传机制
建立链接是三次握手同步双发的“序列号+确认号+窗口大小信息”,是确认重传和流量控制的基础。传输过程中,如果checksum校验失败、丢包、延时,发送端重传。
(2)数据排序
TCP有专门的序列号SN字段,课提供数据re-order
(3)流量控制
滑动窗口和计时器的使用。TCP窗口会指明双方能够发送接收的最大数据量,发送方通过维持一个发送滑动窗口来确保不会发生由于发送方报文发送太块接收方无法及时处理的问题。
(4)拥塞控制
4个核心算法组成:1:慢启动 。2 :拥塞避免 。 3:快速重传 。 4:快速恢复。
3:TCP三次握手,为什么不是两次,挥手为什么是四次
!!!握手和挥手过程省略!!!
在服务端对客服端的请求进行回应后,就会理所当然的认为连接已建立,而如果客服端没有收到服务端的回应,认为连接没有建立,服务端会对已建立的连接保存必要的资源,如果大量的这种情况下,服务端会崩溃。
断开连接时,服务器向客户端发送的ack和fin包是分两次发的,因为服务端在收到客服端发送的fin包时,可能还有数据要传送,所以先发ack,等待传输结束后再发送fin断开这边的连接。
4:OSI七层模型
(1)物理层
主要功能是,利用传输介质为数据链路层提供物理连接,实现比特流的透明传输
(2)数据链路层
负责建立和管理节点间的链路,功能:通过各种控制协议(差错控制,流量控制方法),将有差错的物理信道变成为差错的、能可靠传输数据帧的数据链路。
(3)网络层
在下两层的基础上向资源子网提供服务,主要任务:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
(4)运输层
是通信子网和资源子网的接口和桥梁,起到承上启下的作用。任务:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。
(5)会话层
用户应用程序和网络之间的接口,主要任务:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的链接称为会话。因此会话层的任务是组织和协调两个会话进程之间的通信,并为数据交换进行管理。
(6)表示层
对来自应用层的命令和数据进行解释,对何种语法赋予相应的含义,并按照一定的格式传给会话层。主要功能是:处理用户信息的表示问题,如编码、数据格式转换和加密解密。
(7)应用层
是计算机用户以及各种应用程序和网络之间的接口,功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
好处:
(1)减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处的层次,便于查找和纠错
(2)在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可以放在多种低层协议上运行。
(3)能有效刺激网络技术革新,因为每次更新都可以在小范围内进行
5:http和https的区别
(1)http是超文本传输协议,信息是明文传输。https则是具有安全性的ssl加密传输协议。
(2)http和https使用的是完全不同的链接方式,用的端口也不一样,前者是80,后者是443
(3)http连接时无状态的,指协议对于事务的处理没有记忆能力。https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http安全。
6:Session
web开发中,服务器可以为每个用户创建一个会话对象(Session),默认一个浏览器独占一个Session对象。需要保存用户数据时,服务器可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据,为用户服务。
session和cookie的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
7:输入一个URL到服务器,描述下过程
发送端从应用层往下走,接收端从数据链路层往上走
(1)浏览器输入URL,其中http是协议
(2)应用层的DNS解析,返回对用的IP地址
(3)应用层客户端发送http请求
(4)网络层IP查询MAC地址
(5)传输层TCP传输报文
(6)数据到达数据链路层,此时客服端发送请求结束。
(7)服务器在数据链路层收到数据包,在层层网上到应用层
(8)服务器响应请求,查找客户端请求的资源并返回响应报文
8:两台机器之间的通信过程
PC1首先判断目标IP是否和自己在同一个网段
(1)是,进行ARP广播,解析出MAC地址
(2)不是,则将网关的mac地址作为mac地址。(PC1封装的数据包括目标,源的端口号,IP,mac地址。)交换机收到数据后,对比mac地址表,知道从哪个口发出数据。路由收到数据后,根据路由表将数据发往下一个目的地。最后一个路由通过ARP解析出PC2的mac地址。(路由封装的数据包括目标,源的端口号,IP,mac地址。)
9:socket编程和http协议
socket连接就是TCP连接,一旦连接建立,双方可以相互发送数据内容,直到双方连接断开。
http连接使用的是“请求-响应”的方式,不仅请求时需要先建立连接,而且需要客服端向服务器发出请求后,服务端才能回复数据。
很多情况下需要服务器主动向客服端推送数据,保持客户端与服务器数据的实时与同步。此时双方建立的是socket连接,服务器可直接将数据传送给客户端。若双方建立的是http连接,则服务器需要等客服端发送一次请求后才能将数据传回客户端。