网络编程总结练习
1.什么是C/S架构?
c : client(客户端) s : server(服务端)
通过C/S架构可以实现网络通信
2.互联网协议是什么?分别介绍五层协议中每一层的功能?
互联网协议就是计算机界的英语,网络就是物理链接介质+互联网协议
OSI七层:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
TCP/IP四层/五层:
应用层 应用层 :软件 qq 暴风
传输层 传输层 :建立端口到端口的通信 0-65535 0-1023为系统占用端口 tcp ucp
网络层 网络层 :ip+mac 能找到全世界唯一的计算机 ip:找到哪一个局域网 mac:找到那一台机器
数据链路层 接口层 :定义电信号的分组方式
物理层 : 发送01010101...电信号
3.基于tcp协议通信,为何建立链接需要三次握手,而断开链接却需要四次挥手
三次握手:client接收请求建立通道,server发送请求也建通道 , client发送可以建立,通过三次握手可以建立双向通道
四次挥手:client接收请求,server同意请求,server发送请求,client接收请求
4.为何基于tcp协议的通信比基于udp协议的通信更可靠?
tcp:可靠 对方给了确认收到信息,才发下一个,如果没收到确认信息就重发
udp:不可靠 一直发数据,不需要对方回应
5.流式协议指的是什么协议,数据报协议指的是什么协议?
流式协议: TCP协议,可靠传输
数据报协议: UDP协议,不可传输
6.什么是socket?简述基于tcp协议的套接字通信流程
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部。
服务端:创建socket对象,绑定ip端口bind(), 设置最大链接数listen(), accept()与客户端的connect()创建双向管道, send(), recv(),close()
客户端:创建socket对象,connect()与服务端accept()创建双向管道 , send(), recv(),close()
7.什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?
粘包:数据粘在一起,主要因为:接收方不知道消息之间的界限,不知道一次性提取多少字节的数据造成的
数据量比较小,时间间隔比较短,就合并成了一个包,这是底层的一个优化算法(Nagle算法)