网络编程总结练习

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算法)

原文地址:https://www.cnblogs.com/Mryang123/p/8834701.html