【 Linux 】Linux套接字简要说明
Linux套接字
源IP地址和目的IP地址以及源端口和目标端口号的组合称为套接字。其作用于标识客户端请求的服务器和服务。
套接字,支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点 简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。
非常非常简单的举例说明下:Socket=Ip address+ TCP/UDP + port。
套接字连接的过程如同客户拨打一个电话到一个大公司(系统),接线员(服务器进程)接听电话并把它转接到你要找的部门,然后再从那里转到你要找的人(服务器套接字),然后接线员(服务器进程)再继续转接其他(客户)的电话。
套接字有本地套接字和网络套接字两种。本地套接字是linux文件系统中的文件名,一般放在/tmp或/usr/tmp目录中,网络套接字的名字是与客户连接的特定网络有关的服务标识符(端口号或访问点),这个标识符允许Linux将进入的针对特定端口号的连接转到正确的服务器进程。
套接字通信建立过程:
服务器端:
1. 服务器应用程序用系统调用socket创建一个套接字。它是系统分配给服务器进程的类似文件描述符的资源。
2. 服务器进程用系统调用bind命名套接字。然后服务器进程就开始等待客户端连接到这个命名套接字。
3. 系统调用listen创建一个队列用来存放来自客户的进入连接。
4. 服务器通过系统调用accept来接受客户的连接。accept会创建一个不同于命名套接字的新套接字来与这个特定客户进行通信,而命名套接字则被保留下来继续处理其他客户的连接请求。
客户端:
1. 调用socket创建一个未命名套接字。
2. 调用connect与服务器建立连接,将服务器的命名套接字作为一个地址。
例子:
nginx服务器:
1. 启动nginx后,nginx创建一个socket套接字,监听在80端口,此时状态为listening
2. 当有客户端连接80端口时,系统调用accept来接受客户的连接,并创建一个与listening不同的套接字来接受客户的请求。此时,一个客户端的请求就会占用一个 >1024的端口。
ps: Linux系统最大端口数是65535。减去1024系统端口,再减去其他一些服务端口的开销。基本保持在60000端口。也就是单台服务器建立的套接字不可能超过60000连接的理论值,如果是代理服务器,这个值则要除以2,也就是30000
【 Linux 】Linux套接字简要说明的更多相关文章
- 【转载】Linux下套接字学习
感觉这个系列还不错,学习一下. 先看的是第三篇: http://blog.csdn.net/gatieme/article/details/46334337 < Linux下套接字详解(三)-- ...
- linux netlink套接字学习资料
理论: http://blog.csdn.net/unbutun/article/details/3394061 进一步深入: http://edsionte.com/techblog/archive ...
- Linux/UNIX套接字连接
套接字连接 套接字是一种通信机子.凭借这样的机制.客户/server系统的开发工作既能够在本地单机上进行.也能够夸网络进行. 套接字的创建和使用与管道是有差别的.由于套接字明白地将客户和server区 ...
- Linux编程---套接字
网络相关的东西差点儿都是建立在套接字之上.所以这个内容对于程序猿来说还是蛮重要的啊. 事实上套接字也就是一个特殊的设备文件而已,我始终不能明确为什么要叫套接字.这么个奇怪的名字.只是还是就这样算了吧. ...
- Linux下套接字具体解释(三)----几种套接字I/O模型
參考: 网络编程–IO模型演示样例 几种server端IO模型的简介及实现 背景知识 堵塞和非堵塞 对于一个套接字的 I/O通信,它会涉及到两个系统对象.一个是调用这个IO的进程或者线程,还有一个就是 ...
- 关于linux 原始套接字编程
关于linux 网络编程最权威的书是<<unix网络编程>>,但是看这本书时有些内容你可能理解的不是很深刻,或者说只知其然而不知其所以然,那么如果你想搞懂的话那么我建议你可以看 ...
- linux 网络套接字
在内核分析网络分组时,底层协议的数据将传输到跟高的层.而发送数据的时候顺序是相反的.每一层都是通过加(首部+净荷)传向跟底层,直至最终发送. 这些操作决定了网络的的性能. 就如下图所示 linux因此 ...
- linux程序设计——套接字选项(第十五章)
如今能够改进客户程序,使它能够连接到不论什么有名字的主机,这次不是连接到演示样例server,而是连接到一个标准服务,这样就能够演示port号的提取操作了. 大多数UNIX和一些linux系统都有一项 ...
- Linux原始套接字实现分析---转
http://blog.chinaunix.net/uid-27074062-id-3388166.html 本文从IPV4协议栈原始套接字的分类入手,详细介绍了链路层和网络层原始套接字的特点及其内核 ...
随机推荐
- Cassandra 常见错误索引
类型错误 类型错误调试的技巧 有时候,类型错误提示比较不友好,比如不知道哪个字段出错. 在php中可以用 //过滤几个数据进行操作,逐个检查,或者折半查找错误 $data = array_splice ...
- 去西交大考PAT认证
这周六去了西交大去考浙大PAT认证,为什么要写这个博客呢.因为...我不是西交大的学生,找考场就花了我很多时间,各种搜都找不到PAT的考场在哪. 在此记录一下,希望有有缘人再去西交大考试,可以少走点弯 ...
- ipfs01
IPFS音乐播放器 IPFS相关 IPFS第一次亲密接触 什么是IPFS IPFS对比HTTP/FTP等协议的优势 IPFS应用场景 ipfs入门 官网地址:https://ipfs.io 下载安 ...
- Java 实现一个带提醒的定时器
定时闹钟预览版EXE下载链接:https://files.cnblogs.com/files/rekent/ReadytoRelax_jar.zip 功能说明: 实现了一个休息提醒器,用户首先设定一个 ...
- I/O流任务
一.完成以下链接[https://www.cnblogs.com/zhrb/p/6834084.html]中的任务3.4.5. 3. 字符编码 主要讲解中文乱码问题,FileReader.InputS ...
- linux tomcat 启动报错 Cannot find /etc/bin/setclasspath.sh
这是由于tomcat/bin/catalina.sh文件中有一个设置变量的方法 $CATALINA_HOME 有的tomcat中需要默认此值 $CATALINA_HOME=tomcat地址
- [转]dojo/mouse
dojo/mouse Authors:Kris Zyp Project owner:Kris Zyp since:1.7.0 Contents Usage enter leave mouseButto ...
- BZOJ4481 JSOI2015非诚勿扰(概率期望+树状数组)
首先求出每个女性接受某个男性的概率.这个概率显然是一个无穷等比数列求和. 然后按编号从小到大考虑每个女性,维护出每个男性被选择的期望次数,BIT上查询后缀和即可. 需要long double. #in ...
- [洛谷P3743]kotori的设备
题目大意:ことり有$n$个设备,每个设备每秒共减少$a_i$能量(也就是说每一瞬间都在减少,而不是在一个时刻突然减少),开始前有$b_i$能量,ことり还有一个充电宝,无限能量,每秒共可以提供$p$的能 ...
- [Leetcode] remove element 删除元素
Given an array and a value, remove all instances of that value in place and return the new length. T ...