11.网络编程
创始人
2024-05-31 00:13:09
0

1.客户端-服务器

客户端和服务器是进程,不是机器或者主机

2.网络

对于主机,网络只是一种I/O设备,是数据源和数据接收方
一个插到I/O总线扩展槽的适配器提供了到网络的物理接口
物理上而言,网络是一个按照地理远近组成的层次系统
最底层是LAN(局域网),最流行的LAN技术是以太网(Ethernet)
一台主机发送一段位(称为帧),到这个网段的其他任何主机
每个帧包括头部位和数据位的有效载荷
头部位:标识帧的源和目的地址,以及长度
桥接以太网
多个不兼容的局域网可以通过路由器连接成一个internet(互联网络)
路由器也能连接高速点到点,称为WAN(广域网)
互联网络的特性:能由采用完全不同和不兼容技术的各种局域网和广域网组成
通过一层运行在每个主机和路由器的协议软件,消除不同网络之间的差异
协议软件的能力:
命名机制:每台主机被分配至少1个互联网络地址,唯一标识这台主机
传送机制:把数据位捆扎成包(不连续的片)
包由包头和有效载荷组成
包头包括包的大小、源主机和目的主机的地址
有效载荷包括从源主机发出的数据位
传送数据的实例:
(1)主机A的客户端进行系统调用,从客户端的虚拟地址复制数据到内核缓冲区
(2)协议软件创建LAN1的帧(封装)
互联网络包头寻址到主机B,LAN1帧头寻址到路由器
互联网络包的有效载荷是实际的用户数据,LAN1帧的有效载荷是一个互联网络包
(3)LAN1适配器复制帧到网络
(4)路由器的LAN1适配器从电缆上读取帧,并传送到协议软件
(5)路由器从互联网络包头提取目的互联网络地址,用它作为路由表的索引。
路由器剥落旧的LAN1的帧头,加上主机B的LAN2帧头,把帧传送到适配器
(6)路由器的LAN2适配器复制帧到网络
(7)主机B的适配器从电缆读取帧,并传送到协议软件
(8)主机B的协议软件剥落包头和帧头。
服务器进行系统调用时,协议软件将得到的数据复制到服务器的虚拟地址空间

3.全球IP因特网

每台因特网主机都运行实现TCP/IP协议(传输控制协议/互联网络协议)的软件
TCP/IP实际上是一个协议族,其中每一个都提供不同的功能
把因特网看成一个世界范围的主机集合:
主机被映射为一组32位的IP地址
这组IP地址被映射成一组称为因特网域名的标识符
主机的进程通过连接和其他主机的进程通信
TCP/IP为任意整数数据项定义了统一的网络字节顺序(大端字节顺序)
IP地址通常以点分十进制表示法表示,如128.2.194.242
因特网客户端和服务器通信时使用IP地址
域名:cmu.edu
数学角度可以认为每条主机条目是一个域名和IP地址的等价类

4.套接字接口

从Linux的内核来看,套接字是通信、连接的一个端点
从Linux的层序来看,套接字是有相应描述符的打开文件
用“地址:端口”表示
一个连接由两端的套接字地址唯一确定,这对地址称为套接字对,以元组表示
(cliaddr:cliport, servaddr:servport)
套接字的地址结构
socket函数:客户端通过socket建立与服务器的连接
服务器用bind、listen、accept建立与客户端的连接
bind函数:告诉内核,联系服务器套接地址和套接字描述符
listen函数:告诉内核,描述符是被服务器使用的,而不是客户端
客户端是发起连接请求的主动实体,服务器是被动实体
默认情况下,内核任务socket创建的描述符对应主动套接字,存在于客户端
listen将主动套接字转化为监听套接字,可以接受来自客户端的连接请求
accept函数:服务器通过accept等待来自客户端的连接请求
监听描述符:作为客户端连接请求的一个端点,通常被创建一次,存在于服务器的整个生命周期
已连接描述符:客户端与服务器连接的一个端点,每次服务器接受连接请求时都会创建,只存在于服务器为一个客户端服务的过程中
区分二者,可以建立并发服务器,同时处理许多客户端连接
每次一个连接请求到达监听描述符,可以派生一个新的进程,通过已连接描述符与客户端连接
getaddrinfo函数:将主机名、主机地址、服务名、端口号字符串转化为套接字地址结构
返回一个指向addrinfo结构的链表
getnameinfo函数:将套接字地址结构转化为主机和服务名字符串
套接字接口的辅助函数
open_clientfd函数:客户端调用,以建立与服务器的连接
open_listenfd函数:服务器创建一个监听描述符,准备接收连接请求
迭代服务器:一次只能处理一个客户端,一次一个地在客户端间迭代
并发服务器

5.Web服务器

Web客户端和服务器之间的交互通过一个基于文本的应用级协议,即HTTP协议(超文本传输协议)
Web的内容通过HTML语言(超文本标记语言)编写
Web客户端,即浏览器
超链接(指针)
Web服务器向客户端提供的内容:
磁盘文件称为静态内容
运行时可执行文件产生的输出称为动态内容
这些文件中的每一个都有一个唯一的名字,称为URL(通用资源定位符)
“?”分隔文件名和参数,“&”分隔参数和参数
https://www.baidu.com/s?ie=UTF-8&wd=hello&tn=78000241_13_hao_pg
客户端使用前缀,来决定与哪类服务器联系、服务器在哪里、监听的端口号
http://www/google.com:80
服务器使用后缀,来发现文件系统中的文件,并确定请求的是静态内容还是动态内容
/index.html
浏览器在URL后添加缺失的"/",并传递给服务器,服务器又把"/"扩展到某个默认的文件名
HTTP事务:
HTTP请求:
5:请求行
GET方法指导服务器生成和返回URI(统一资源标识符)(相应URL的后缀)
6:请求报头
代理缓存会使用Host请求报头,这个代理缓存有时作为浏览器和管理被请求文件的原始服务器的中介
客户端和原始服务器之间,可以有多个代理,即代理链
7:空的文本行,终止报头列表,并指示服务器发送被请求的HTML文件
HTTP响应:
8:响应行
9~13:响应报头
14:空的文本行
15~17:响应主体
CGI(通用网关接口):
客户端将程序参数传递给服务器
服务器将参数传递给子进程
服务器将其他信息传递给子进程
子进程将输出发送到哪里

相关内容

热门资讯

小学生安全知识,要长! 小学生安全知识,要长!我办了个手抄报,是作业,可是要很长的那一种,谁来帮帮我?我会十分感谢的!有长的...
到底是杨氏太极拳还是杨式太极拳 到底是杨氏太极拳还是杨式太极拳早年间称杨氏或杨家太极拳!后来慢慢的改成了杨式!杨氏吧......氏,...
豆瓣酱怎么做 豆瓣酱怎么做1.将豆子浸泡在水中,清洗并去皮,然后在高压锅中煮沸,沥干水分2.倒入一些干面粉,搅拌均...
对联:幽壑兰开,一路芳香扑鼻 对联:幽壑兰开,一路芳香扑鼻幽壑兰开,一路芳香扑鼻峻崖云锁,两山绿荫怡心
mp5电子书中的字符编码是什么... mp5电子书中的字符编码是什么意思,书签列表又有何用字符编码不用管它的,只是字体的样式,书签添加后以...
用英语怎么说:一切从头来和很酷... 用英语怎么说:一切从头来和很酷,很棒 bac从头开枝哪始1.fromsquareone2.Froms...
淘宝刷动态评分处罚 淘宝刷动态评分处罚13年没查,14年我不清楚淘宝 查的很严的 你卖啥的1相关的知识跟技术2还要...
刀剑神域黑衣剑士SAO克莱因厉... 刀剑神域黑衣剑士SAO克莱因厉害吗看你的队伍构成,克莱因特点就是灼烧,有人专门组了个灼烧队伍,不过正...
描写春天景色的儿歌 描写春天景色的儿歌春天在哪里呀?春天在哪里?春天在那青翠的山林里这里有红花呀这里有绿草还凯亩有那会唱...
i go swim in s ... i go swim in s and go skate in wi go swim in summe...
磁悬浮孙悟空停电了会不会掉下来 磁悬浮孙悟空停电了会不会掉下来不会。磁悬浮孙悟空迟誉是一款适合三到五岁儿码键段童玩耍的益智人物玩具,...
《西游记》每回师徒四人性格特点 《西游记》每回师徒四人性格特点唐生 优柔寡断,孙悟空 急躁活泼,猪八戒 好色之徒,沙和尚沉重老实
幻想之城选择那个族好,我要最好... 幻想之城选择那个族好,我要最好的无论是前期还是后期兽族,他现在不管是前期还是后期都很强大。很厚的血,...
春天是一首歌是一幅画还可以写春... 春天是一首歌是一幅画还可以写春天是什么春天是一首歌是一幅画还可以写春天是什么春天是一句诗,春天是一件...
五柳先生指的是谁? 五柳先生指的是谁?五柳先生这一假想人物的描述来用以自况的文章,本文是作者自抒志趣的文章,作者为[东晋...
《诡八楼》这部影片在哪里能看到... 《诡八楼》这部影片在哪里能看到?你说的这个,现在可以看了! 我刚看完还行吧没那么吓人我看这种片子都麻...
鹿鼎记隐者天赋怎么加点,不要复... 鹿鼎记隐者天赋怎么加点,不要复制好吧....不复制....可是实在懒得打字.....也记不住所有天赋...
求几部电影! 求几部电影!尼斯湖水怪,ET,《那山,那狗,那人》
关于打篮球 砸到人的问题 关于打篮球 砸到人的问题这种事情,经常遇到。打篮球的时候,小孩子还有女人都经常跑到里面去玩,挺烦人的...
现在交通和医疗系统都十分发达,... 现在交通和医疗系统都十分发达,农村医生有存在的必要吗?农村医生还是有存在的必要,因为这样就能够对农村...