1.什么是C/S架构?
C 是client 客户端, S是Server 服务端 ,实现客户端与服务器之间的通信架构
2.互联网协议是什么?分别介绍五层协议中每一层的功能?
互联网协议就是计算机界的英语,网络就是物理链接介质+互联网协议。有应用层,传输层,网络层,数据链路层,物理层
物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
数据链路层的功能:定义了电信号的分组方式
网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
3.基于tcp协议通信,为何建立链接需要三次握手,而断开链接却需要四次挥手
建立链接三次握手:客户端发送链接请求至服务端(第一次),服务端发送确认可以链接,并且同时发送链接请求至客户端(第二次),客户端收到后,发送确认请求至服务端(第三次)
断开链接四次握手:客户端发送断开链接请求(第一次),服务端收到后,会发送确认请求至客服端,这是客户端至服务端断开,无法发送数据,但此时服务端还有数据没有传完至客户端(第二次),当接发送完数据后,服务端会发送断开请求至客户端(第三次),客户端收到请求后,会发送确认请求信息至服务端(第四次)
4.为何基于tcp协议的通信比基于udp协议的通信更可靠?
因为tcp协议发送出去后会有返回信息,确认对方已经收到,但udp只是负责发送出去,并不关心是否对方已经收到,但这种效率高
5.流式协议指的是什么协议,数据报协议指的是什么协议?
6.什么是socket?简述基于tcp协议的套接字通信流程
Socket是应用层和TCP/IP协议之间的软件抽象层,是一种接口
服务端:①生成Socket对象②绑定主机端口号到套接字 bind ③开始监听listen④accept被动接收
客户端:connect主动初始化TCP服务器链接
7.什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?
在发送数据包时,两个包粘在一起发送,就为粘包。数据大于接收端设置的最大接收量时,导致数据溢出,这时溢出的数据会暂时放在PIPE里,这样会与下一个即将到来的数据包粘在一起发送过来。
基于socket开发一个聊天程序,实现两端互相发送和接收消息
基于tcp socket,开发简单的远程命令执行程序,允许用户执行命令,并返回结果
基于tcp协议编写简单FTP程序,实现上传、下载文件功能,并解决粘包问题
基于udp协议编写程序,实现功能
执行指定的命令,让客户端可以查看服务端的时间
执行指定的命令,让客户端可以与服务的的时间同步