1网络编程基本概念
1 进程和线程得基本概论
(1)处于运行过程中得程序实例,是操作系统调度和分配资源得基本单位。,但不是执行和调度资源得单位。
(2)一个进程可以有多个线程,所有得线程都"同时"执行进程地址空间中得代码,那么要让所有得线程都能够线程,谁先运行谁后运行怎么办呢
,操作系统大哥通过一种循环得方式提供时间片,造成一种假象(看起来是同时运行得)。
(3)当创建一个进程的时候,系统自动创建它得第一个线程称为主线程,这样这些进程可以继续生产更多得孩子。
2实现网间进程通信必须解决的问题有哪些呢
(1)标识问题:一个主机可以有唯一的ID来标识,但是两个主机,如果A主机标识为4,B主机也可能是4,这样在网络环境下没有勒意义
(2)与网络协议栈的问题:两个主机通信,通过画图更能体现分层的关系应用进程->交给下层传输层通过可靠的传输->传输层及其协议往下最后到物理层
将数据变为信号->经过各种网络设备存储转发到目的主机->然后往上层走就是逆向得过程,这样相当的复杂,Windows通过Socket来解决
(3)解决多重协议识别问题:不同的协议,格式不同,工作方式不同。
(4)不同通信服务问题:比如需要传输一份非常重要得文件,需要传输可靠,无差错;或者下载程序,就算是一个字节掉了那也白搭。但是有一些聊天这样的应用就要求不高勒。
3端口
(1)应用层进程与传输层协议实体之间的通信接口,再OSI模型中称为应用层进程与传输层协议实体间的服务访问点SAP
(2)应用层进程通过和端口绑定,通过这个端口进行数据的发送和接受。就类似文件描述符。
端口的分配机制:
(1)全部端口数65535个端口分为保留端口(0-1023)和自由端口(1024-).首先需要向本地操作系统提出申请,操作系统返回一个本地唯一的端口号,进程通过合适系统调用讲自己与这个端口号绑定,然后进行通信。
具体分配:
0:不使用或者特殊
1-255:保留特定的服务
256-1023:保留给其他服务 如路由
1024-4999:可以用作任意客户机的额端口
5000-65535 用户的服务器端口