网络编程

Posted qmcj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程相关的知识,希望对你有一定的参考价值。

客户端 服务器 是进程

网络 IO设备 数据源与数据接收方

数据 适配器 IO 内存总线 内存

 

协议:一致性

命名

传送数据(打包)

语义抽象,封装接口:套接字

IP:主机间 IP地址

UDP TCP 进程间

 

DNS域名系统

域名:IP地址

localhost:127.0.0.1

 

通信:在连接上发送接收 字节流

 

对进程而言,连接是 点对点,全双工的

套接字:连接的端点

地址:端口

 

客户端:端口由内核自动分配,临时端口

 

服务器:知名端口

 

套接字对:确定一个连接

 

套接字接口:一组函数

+Unix IO

=网络应用

 

linux内核角度

套接字是通信端点,有相应描述符的打开文件

 

connect,bind,accept函数要求参数:指针:指向套接字地址结构

 

socket函数创建套接字描述符

返回的clientfd描述符是部分打开的,不能读写

传参:地址,协议类型?

 

connect函数建立连接

成功后描述符可以读写

 

bind,listen,accept

服务器函数,用于连接客户端

 

客户端:发起请求的主动实体

服务器端:等待请求的被动实体

 

内核默认socket创建主动实体(客户端)

listen指明为被动(服务器)

将套接字从主动套接字转化为监听套接字(一次)

 

accept等待客户端请求

返回已连接套接字(多次)

 

getaddrinfo

getnameinfo

 

open_clientfd

open_listenfd

 

web服务器:HTTP协议

web内容:MINE类型的字节序列

提供内容的方式:

取磁盘文件:静态

运行可执行文件:动态

URL:通用资源定位符

文件名?参数&参数

客户端:前缀访问服务器

服务器:后缀定位文件

 

HTTP请求:

请求行

请求报头,结束标记(空行)

 

请求行:

method URI  vers

URI:URL后缀

 

请求报头:额外信息

header-name:header-data

 

HTTP响应

响应行 

version status-code status-message

响应报头

响应主体

 

CGI:环境变量

客户端参数

 

CHI程序:标准输出重定向到套接字

 

当文件映射到内存,不再需要其描述符了

 

以上是关于网络编程的主要内容,如果未能解决你的问题,请参考以下文章

Linux高级网络编程系列教程

Linux高级网络编程系列教程

面向对象编程面向组件编程面向方面编程面向服务编程

编程范式:命令式编程(Imperative)声明式编程(Declarative)和函数式编程(Functional)

少儿编程教育未来前景如何?我想加入少儿编程这行。

TCP/IP网络编程——理解网络编程和套接字编程