一、什么是C/S架构?算法
答:C指的是client(客户端软件),S指的是Server(服务端软件)设计模式
二、互联网协议是什么?分别介绍五层协议中每一层的功能?服务器
答:互联网的核心就是由一堆协议组成。若是把计算机比做人,互联网协议就是计算机界的英语。全部的计算机都学会了互联网协议,那全部的计算机都就能够按照统一的标准去收发信息从而完成通讯了。网络
三、基于tcp协议通讯,为什么创建连接须要三次握手,而断开连接却须要四次挥手数据结构
答:由于当Server端收到Client端的SYN链接请求报文后,能够直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。可是关闭链接时,当Server端收到FIN报文时,极可能并不会当即关闭SOCKET,因此只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端全部的报文都发送完了,我才能发送FIN报文,所以不能一块儿发送。故须要四步握手。架构
四、为什么基于tcp协议的通讯比基于udp协议的通讯更可靠?socket
答:TCP可靠的缘故:只要不获得确认,就从新发送数据报,直到获得对方的确认为止。UDP协议是尽最大努力交付,没法保证数据准确交付到目标主机,也不须要对接收到的UDP报文进行确认。tcp
五、流式协议指的是什么协议,数据报协议指的是什么协议?优化
答:流式协议指的是TCP协议,数据报协议指得是UDP协议。spa
六、什么是socket?简述基于tcp协议的套接字通讯流程
答:Socket是应用层与TCP/IP协议族通讯的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来讲,一组简单的接口就是所有,让Socket去组织数据,以符合指定的协议。
服务端先初始化Socket,而后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端链接。这时客户端初始化一个socket,而后链接服务器(connect),若是链接成功,这时客户端与服务端的链接就创建了。客户端发送数据请求,服务端接收请求并处理请求,而后把回应数据发给客户端,客户端读取数据,最后关闭数据,一次交互结束。
七、什么是粘包? socket 中形成粘包的缘由是什么? 哪些状况会发生粘包现象?
答:TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。
所谓粘包问题缘由:(1)主要仍是由于接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所形成的。(2)发送方引发的粘包是由TCP协议自己形成的,TCP为提升传输效率,发送方每每要收集到足够多的数据后才发送一个TCP段。若连续几回须要send的数据都不多,一般TCP会根据优化算法把这些数据合成一个TCP段后一次发送出去,这样接收方就收到了粘包数据。
发生粘包的状况:(1)发送端须要等缓冲区满才发送出去,形成粘包(发送数据时间间隔很短,数据了很小,会合到一块儿,产生粘包)(2)接收方不及时接收缓冲区的包,形成多个包接收(客户端发送了一段数据,服务端只收了一小部分,服务端下次再收的时候仍是从缓冲区拿上次遗留的数据,产生粘包)
八、基于socket开发一个聊天程序,实现两端互相发送和接收消息
九、基于tcp socket,开发简单的远程命令执行程序,容许用户执行命令,并返回结果
十、基于tcp协议编写简单FTP程序,实现上传、下载文件功能,并解决粘包问题
十一、基于udp协议编写程序,实现功能
(1)执行指定的命令,让客户端能够查看服务端的时间
(2)执行指定的命令,让客户端能够与服务的的时间同步