套接字编程
创始人
2024-09-25 07:48:04
0

网络套接字编程 

先将数据通过os,将数据发送到目标主机(手段)TCP/IP协议完成,再在本主机将收到的数据推送到自己上层指定的进程,这时候网络通信本质上就成了进程间的通信。其中ip地址可以标识互联网上唯一的一台主机,而端口号可以标识主机内唯一的一个进程。网络通信本质就是通过IP+PORT构建进程的唯一性,来进行基于网络的进程间的通信。

端口号为什么不采用进程的pid?并不是所有的进程都要进行网络间的通信,如果用pid进行标识,旧的对管理进程的结构体加字段来对其是否进行网络通信加字段,其次因为pid是属于os中进程管理模块,如果我们的端口号采用pid就意味着增加了网络通信管理和进程管理的耦合度,一旦进程管理对pid进行了更改还要考虑网络通信管理模块,于是自己新起一套端口号来标识主机中需要进行网络通信的进程。

面向字节流, 在传输层没有报文的概念,它收到一堆的数据,把这一堆的数据交给上层应用层也可以一个字节一个字节的交,对于这个二进制的字节数据如何解释,tcp层是不关心的 ,他只关心应用层要多少就给多少,具体的解释是交由应用层来处理的,这个我们称之为字节流。

网络字节序列是为了解决不同主机 采用大小端存储差异的问题。所以规定:网络序列必须是大端(低地址高权值位而高地址是低权值位),发数据必须转换成为大端,接收数据再按照大端去接收。  

为了让大家可以用一套套接字的既可以进行网络间通信又可以进行本地通信,于是设计出了一个公共的数据结构struct sockaddr,这个结构体可以兼容sockaddr_in和sockaddr_un,传递参数的时候根据通信的类型对struct sockaddr进行一下强转就可以了。下面介绍一下sockaddr结构体,因为socket的api需要用到这个变量类型。

lo就是loop,127.0.0.1: 本地环回,就表示的就是当前主机默认对应的ip地址,通常用来进行本地通信或者测试。用来走网络协议栈但是并不用于队中把数据发送到网络。 如果我们在127.0.0.1这个IP地址上测试通过了,但是在网络当中测试的时候不通过,大概率是网络的问题。

我们的云服务器,不需要bind ip地址,需要让服务器自己指定ip地址,但是自己本地装的虚拟机或者物理机器是允许的。

网络通信属于进程间通信的范畴, 我们的网络套接字本质也是文件,有对应的文件描述符。

守护进程

1、进程组分为前台任务和后台任务

2、如果后台任务提到前台,也就是谁当前使用该终端,老的前台任务bash就无法运行了。ctrl+c可以干掉该任务然后让bash重新回到前台运行

3、任何时刻,在会话中只能有一个前台任务在运行!所以我们在命令行启动一个前台进程之后,bash就无法运行了。

4、如果登录就是创建一个会话,bash任务,启动我们的进程,就是在当前会话中创建新的前后台任务,那么如果我们退出呢就是销毁该会话,销毁会话就可能会影响会话内部的所有任务。

一般网络服务器,为了不受到用户登注销的影响,就需要让该进程该会话中独立出来,不要跟任何一个用户会话产生关联,独立成为一个会话,从包含关系变成并列关系,就有了守护进程的运行方式。   pid_t setsid(void)谁调用该函数就把自己设立成为一个新的会话,成功了就返回调用进程的pid。 

url

要访问服务器,必须知道服务器的IP+PORT,一般公司提供服务并不是提供的IP+PORT,而是用域名提供服务。域名解析服务:将域名www.baidu.com解析成为ip地址110.242.68.4。

url是统一资源定位符,通过url可以唯一确定全网当中唯一的一份资源,可能是图片、音频等资源,让后通过端口对应的进程将这份资源download下来。登录信息现在不这么用了,现在登录都是网页级别的了,不会再域名当中出现登录信息了。由于服务器端的端口号不能随意指定,必须是总所周知的,且不能随便更改的,所以端口号和成熟的应用层协议是一一对应强相关的。https对应的端口号是443,而http对应的端口号是80,所以为什么访问网站的时候没有加上端口号是因为浏览器会自动识别协议名称,而协议有对应的端口号,所以可以省略端口号。 web根目录不一定是Linux下的根目录,是通过web服务器去跟我们进行解释的,我们要访问某种资源一定要通过根目录配合上反斜杠标识服务器目录下某个路径下的资源。?问号之后代表的是参数,比如说搜索的内容,这些参数最终都是要交给我要访问的资源的。参数是kv的,比如uid(key)=1(value),用&做为分隔符级联多个参数。

url对一些特殊的字符需要进行解码和编码的操作,

相关内容

热门资讯

安卓系统可以分享视频吗,安卓系... 你有没有想过,手机里的视频怎么才能和朋友一起分享呢?尤其是当你发现了一个超级搞笑的短视频,或者是一部...
安卓系统上安装pc软件,跨平台... 你是不是也和我一样,对安卓系统上的那些PC软件垂涎欲滴呢?想象在手机上就能享受到电脑上的强大功能,是...
安卓原生系统怎么折腾,深度定制... 你有没有想过,你的安卓手机其实就像一个等待你发挥创意的画布呢?没错,就是那个安卓原生系统,它可是隐藏...
安卓作业系统耗电,深度解析耗电... 手机电量告急,是不是你也和我一样,对安卓作业系统的耗电问题头疼不已?别急,今天就来聊聊这个让人又爱又...
宝宝浙江游戏安卓系统,乐享童年 最近有没有发现你家的小宝贝对手机上的游戏越来越感兴趣了呢?尤其是那些在浙江地区特别受欢迎的安卓系统游...
安卓系统程序放在那,安卓系统程... 你有没有发现,手机里的安卓系统程序总是乱糟糟的,有时候找起来就像大海捞针一样?别急,今天就来给你揭秘...
手表怎么装上安卓系统,轻松安装... 你有没有想过,你的安卓手机那么智能,那你的手表呢?是不是也想给它来个升级,让它也能玩转各种应用,变身...
碧蓝航线在安卓系统,安卓平台上... 你知道吗?最近在安卓系统上,有一款游戏可是火得一塌糊涂,那就是《碧蓝航线》!这款游戏不仅画面精美,剧...
安卓系统设置分辨率,解锁屏幕显... 亲爱的手机控们,你是不是也和我一样,对手机屏幕的分辨率有着超乎寻常的执着呢?分辨率,这个看似简单的数...
安卓超市收银系统下载,高效便捷... 你有没有想过,逛超市的时候,收银员那熟练的操作是不是让你也跃跃欲试呢?现在,机会来了!安卓超市收银系...
安卓系统升级清理,深度清理与性... 亲爱的手机控们,你是不是也和我一样,对安卓系统的升级清理充满了好奇和期待呢?每次系统更新,都仿佛是给...
安卓如何绕过系统安装,深度解析... 你是不是也和我一样,对安卓系统的安装限制感到有些头疼?有时候,我们可能需要安装一些特殊的软件或者游戏...
安卓系统跟linux系统怎么样... 你有没有想过,你的手机里那个默默无闻的安卓系统,和电脑上那个稳如泰山的Linux系统,它们之间到底有...
凤凰系统用安卓软件很卡,凤凰系... 最近是不是发现你的凤凰系统用安卓软件时总是卡得要命?别急,让我来给你细细道来,看看这其中的原因和解决...
安卓系统怎么玩脸书,脸书应用攻... 你有没有想过,在安卓系统上怎么玩转脸书呢?这个全球最大的社交平台,可是让很多人沉迷其中哦!别急,今天...
虚拟机系统安卓11,虚拟机系统... 你有没有想过,手机里的安卓系统竟然也能变成电脑上的虚拟机?没错,就是那个我们每天不离手的安卓11系统...
钻石vip微信安卓系统,畅享无... 你知道吗?在微信这个庞大的社交世界里,钻石VIP可是个让人羡慕的身份呢!尤其是对于那些安卓系统的用户...
安装安卓系统后蓝屏,安卓系统安... 你刚刚升级了安卓系统,是不是觉得自己的手机焕然一新,充满了科技感?就在你沉浸在新系统的美好体验中时,...
安卓系统如何调出返回键,安卓系... 你是不是也和我一样,有时候在使用安卓手机时,突然发现那个神秘的返回键怎么就消失了?别急,今天就来手把...
荣耀8安装原生安卓系统,体验纯... 你有没有想过,让你的荣耀8手机焕发新生?别再让它被那些臃肿的第三方系统拖累啦!今天,就让我带你一起探...