详解Java Socket的工作机制

Socket的来龙去脉

下面的分析主要是参阅了计算机网络(谢希仁第7版)进行总结的,从系统调用—>应用编程接口API—>套接字接口来分析Socket的来龙去脉,当然维基百科上也有对Socket的详细解释

1. 系统调用

大多数操作系统使用系统调用的机制在应用程序和操作系统之间传递控制权。对程序员来说,系统调用和一般程序设计中的函数调用非常相似
系统调用

2. 应用编程接口API

当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口,此接口再将控制权传递给计算机的操作系统。操作系统将此调用转给某个内部过程,并执行所请求的操作。内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。

系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,即应用编程接口API

3. 套接字

由于TCP/IP协议族被设计成能够运行在多种操作系统的环境下,TCP/IP标准允许系统设计者能够选择有关API的具体实现细节。

目前,可供应用程序使用TCP/IP的应用编程接口API的最著名的是套接字接口

而套接字不是物理实体,而是一种抽象,套接字是提供应用程序创建和使用的数据结构

套接字

4. 套接字描述符

当应用进程(客户或者服务器)需要使用网络进行通信时,必须首先发出socket系统调用,请求操作系统为其创建一个”套接字”。这个调用的实际效果是请求操作系统把网络通信所需要的一些 系统资源(存储器空间,CPU时间,网络带宽等) 分配给该应用进程。

操作系统为这些资源的总和用一个叫做套接字描述符(socket descriptor)的号码(小的整数) 来表示,然后把这个套接字描述符返回给应用进程。

socket 描述符

Socket通信图示

socket

由图可以看出Socket通信与TCP/IP协议是分不开的,要使主机A和主机B能够通信,必须建立Socket连接,建立Socket连接必须通过底层TCP/IP协议来建立TCP连接。

Socket通信协议分析

上面就提到,Socket通信与TCP/IP协议是紧密相关的,关于Socket编程通信我们有两种协议可以选择,那就是常见的TCP协议和UDP协议

UDP协议

UDP协议是一种无连接的协议,也称为数据报协议。每次发送数据报时,需要同时发送本机的socket描述符(就是上面所说的套接字描述符)和接收端的socket描述符。所以,每次通信都要发送额外的数据。

TCP协议

TCP协议是一种有连接的协议,使用应用程序之前,必须先建立TCP连接。所以每次在进行通信之前那,我们需要先建立Socket连接&#

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值