Socket理解与简单使用
2017-11-17 19:07
441 查看
网络分层
从下至上物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
IP,ARP,RARP等协议对应于网络层
TCP,UDP等协议对应于传输层(详细看我的另一篇博文)
HTTP,FTP,Telnet等协议对应于应用层
例:
浏览器从服务器获取数据过程:
(传输层)数据从服务器80端口传输到客户端某一端口时遵循TCP协议,客户端的浏览器拿到数据后(此时已去掉TCP协议的包头);(应用层)按HTTP协议处理里面的数据,然后展示给用户
HTTP协议主要应用于B/S模型中服务器与浏览器之间的数据传输
传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的
HTTP连接是客户端发送的每次请求都等待服务器返回,在请求结束后会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
Socket理解
socket是对多个协议簇的封装和应用(给编程人员使用的),本身是一个(接口)API或者一个类。它可以帮你按所指定的协议实现数据的封装,传递。并可以在程序所运行的系统上与各个网络层交互,实现网络连接,数据传递等等多个功能(网络通信)
通过Socket,我们能方便的使用TCP/IP协议,UDP/IP协议等等多个协议。
也可以通过一些最基本的函数或接口,
如create、listen、connect、accept、send、read和write等等来实现网络编程。
Socket实现网络连接
在Windows系统下建立Socket连接需要一对或者多对套接字,运行于客户端的是 ClientSocket ,运行于服务器端的是 ServerSocket 。
套接字之间相互连接过程分为三个步骤:
服务器监听,客户端请求,连接确认服务器监听:服务器端套接字并不指定具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的套接字连接请求。
客户端请求:客户端的套接字提出连接请求,发送给服务器端的套接字。
客户端的套接字首先指出它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后向服务器端套接字提出连接请求。
连接确认:当服务器端套接字监听到客户端套接字的连接请求时,响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,当客户端确认了此描述,便建立完整连接。
而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
相关文章推荐
- Linux下Socket的简单使用及最简化封装
- 在Silverlight中使用Socket进行通信(3)简单的文本聊天工具
- 使用C# socket 简单构架一个web服务器
- 使用socket的阻塞简单通信聊天工具
- Silverlight使用socket tcp简单实现聊天室功能
- 使用Beetle简单构建高性能Socket tcp应用
- 使用Socket进行简单的通信
- Android 网络编程: SOCKET的简单使用。
- Android-Socket多线程应用(聊天室客户端、Handler的简单使用)
- Socket编程: 使用简单线程池为Socket客户端服务
- 练习使用 socket 发送简单的 HTTP GET 请求
- Android学习笔记(30) --- 网络通信之Socket简单使用
- java使用socket实现http简单get请求
- 简单的Client / Server 使用 linux 伯克利 socket实现
- 有效的使用和设计COM智能指针——条款4:理解ATL的CComPtr提倡简单,高效
- loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写
- 在Silverlight中使用Socket进行通信(3)简单的文本聊天工具
- Linux下使用socket传输文件的C语言简单实现
- Silverlight学习笔记一(理解一下机制,使用一下布局,实现一个简单的用户登录)
- Android ListView复杂使用方式简单理解