1.TCP
答:是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
2.UDP
答:UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
3.HTTP? get和post?
答:
1.HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
2. get是从服务器上获取数据,post是向服务器传送数据。
get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
get传送的数据量较小,post传输的数据量较大,一般被默认为不受限制
4.Socket
答:套接字 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
5.长连接
答:
1.所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持
6.短连接
答:
1.短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接
7.强联网
答:我们通常说的强联网其实就是用Socket(套接字)连接,也叫强连接,长连接。
特点:Socket通信具有实时性、长连接的特点。
应用:根据Socket通信的特点,我们很容易想到那些实时对战,多人在线的游戏都是用强联网。
8.弱联网
答:弱联网是HTTP协议(超文本传输协议 ),是互联网上应用最为广泛的一种网络协议。
特点:每次连接只处理一个请求,当服务器处理完客户端的请求即端开连接,节省传输时间。
应用:实现登录、注册、选服功能,游戏角色信息,商城等窗口信息的获取,服务器与数据库通信等。
9.半包和粘包原因和解决方案?
答:
原因:之所以出现粘包和半包现象,是因为TCP当中,只有流的概念,没有包的概念.
解决方案:就是利用封包、拆包原理解决Socket粘包、半包问题。
10.封包协议
答:所谓的封包,就是把各个类型的数据转换成字节数组, 反之拆包就是把对应的字节数组转换为字符串,integer,short,double类型.具体的定义要参考协议包的定义.
11.心跳
答:跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。
总的来说,心跳包主要也就是用于长连接的保活和断线处理。一般的应用下,判定时间在30-40秒比较不错。如果实在要求高,那就在6-9秒。
机制:方法1:应用层自己实现的心跳包 方法2:TCP的KeepAlive保活机制
步骤:客户端每隔一个时间间隔发生一个探测包给服务器
2客户端发包时启动一个超时定时器
3服务器端接收到检测包,应该回应一个包
4如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器
5如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了
12.json,xml和protobuf区别?
答:1.Json和Xml共同点:可读可编辑,不需要schema就可以解析,不用担心工具问题;Protobuf二进制格式,所以没有可读性;解析需要schema;
2.Xml一目了然;Josn较长;Protobud速度异常的快;仅支持c++,java,python
13.p2p和c/s架构区别?
答:P2P:对等网络中的计算机之间可以互相通信和共享资源,
C/S:客户机/服务器结构的网络中可共享资源放在一台专用计算机-服务器上,工作站之间不互相直接共享资源。
P2P网络比较灵活,适用于工作组级的小型网络,当网络规模较大时,其管理和安全性都变得比较困难,此时宜采用客户机/服务器结构。