搞清楚socket

为什么要有socket?

“TCP的协议很复杂,我们不能要求每个程序员都去实现建立连接的三次握手、累积确认、分组缓存,这些应该是属于操作系统内核的部分,没必要重复开发。但是对于应用程序来讲,操作系统需要抽象出一个概念,让上层应用去编程。”

为什么叫socket?

一个比喻而已,就像插座一样,一个插头插进插座,建立了连接。实际上,这个连接有两个端点,每个端点就是一个socket。

为什么要用本端IP、端口号去对应一个socket,而不是只用IP或者IP+进程ID?

TCP是两个进程之间的通信,客户端上有很多进程同时访问多个服务器,服务器上也有多个进程对外提供服务,所以要区分开。不能使用进程号作为区分的ID是因为进程号是一个动态的东西,如果服务器的进程重启了,进程号就变了,且服务器没有办法通知客户端。而端口号是可以固定的,比如80、443,就是服务器上固定的提供HTTP、HTTPS服务的端口号,客户端只需连接这些端口即可。


socket,就是应用层调用内核TCP/IP协议栈的接口,一个TCP连接需要一组IP+端口号去唯一标识,作为应用层的进程,也要跟这个TCP连接进行绑定。

在这里插入图片描述


在这里插入图片描述


参考文章:《码农翻身》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值