本科阶段网络通信方面的知识学习的太少,导师有指点一些方向去提前学习通信方面知识,苦于离开了学校没有图书馆的庇护,网上查找的资料都很散乱,在B站上找了一些关于socket网络编程的视频,结合网上的资料,通过csdn记录自己的学习笔记
Socket网络编程
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
- 简单来说是IP地址与端口的结合协议
- 一种地址与端口的结合描述协议
- TCP/IP协议对相关API的总称;是网络Api的集合实现
socket所处的位置:
socket的工作原理:
先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
参考:https://www.cnblogs.com/wangcq/p/3520400.html
Socket的作用与组成
- 在网络传输中用于唯一标示两个端点之间对链接
- 端点:包括(IP+Port)
- 4个要素:客户端地址、客户端端口、服务器地址、服务器端口
网络编程概念
- 网络编程从大方面说就是对信息的发送到接收
- 通过操作相应Api调度计算机硬件资源,并利用传输管道(网线)进行数据交换过程
- 更为具体对涉及:网络模型、套接字、数据包
1.1、7层网络模型-OSI
参考:OSI七层模型与TCP/IP五层模型 - SevenFormer - 博客园 https://www.cnblogs.com/qishui/p/5428938.html
- 基础层:物理层、数据链路层、网络层
- 传输层:TCP-UDP协议层、Socket
- 高级层:会话层、表示层、应用层
网络模型-对应关系
1.2、Socket编程之TCP、UDP
-
TCP是面向连接的通信协议
-
通过三次握手建立连接,通讯完成时要拆除连接
-
由于TCP是面向连接的,所以只能用于端到端对通讯
-
UDP是面向无连接的通信协议
-
UDP数据包括目的端口号和源端口号信息
-
由于通讯不需要连接,所以可实现官博发送,不局限于端到端
TCP/IP协议中,两个进程间通信对主要模式为:CS模型
主要目的是协同网络中的计算机资源、服务模式、进程间数据共享
常见:FTP、SMTP、HTTP