网络编程——socket编程

一、C/S架构介绍

C/S架构    C:clint(客户端软件)
            S:server(服务端软件)

  python程序员是应用开发程序员,开发的软件都是应用软件,应用软件必须运行于操作系统之上,操作系统则运行于硬件上,应用软件不能直接操作硬件,应用软件对硬件的操作必须调用操作系统接口,由操作系统操作硬件。

客户端软件基于网络发送消息给服务端软件流程:
  1、客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存
  2、客户端操作系统收到数据后,按照客户端软件指定的协议、调用网卡发送数据
  3、网络传输数据
  4、服务端软件调用系统接口,想要将数据从操作系统内存拷贝到自己的内存中
  5、服务端操作系统受到4的指令后,使用与客户端相同的协议,从网卡接收到数据,然后拷贝给服务端软件

  假设我现在要写一个程序,给另一台计算机发数据,必须通过tcp/ip协议 ,但具体的实现过程是什么呢?我应该怎么操作才能把数据封装成tcp/ip的包,又执行什么指令才能把数据发到对端机器上呢?

  简而言之,socket这个东东干的事情,就是帮你把tcp/ip协议层的各种数据封装啦、数据发送、接收等通过代码已经给你封装好了,你只需要调用几行代码,就可以给别的机器发消息了。

二、计算机网络

  计算机之间的通信首先要有物理链接介质,比如网线,交换机,路由器等网络设备。

  通信的线路建好之后,只是物理层面有了可以承载数据的介质,要想通信,还需要我们按照某种规则组织我们的数据,这样对方在接收到数据后就可以按照相同的规则去解析出数据。

三、TCP/IP

  按照功能不同,人们将互联网协议分为osi七层或tcp/ip五层或tcp/ip四层。

  http://www.cnblogs.com/linhaifeng/articles/5937962.html#_label5

TCP/IP五层
  1、应用层:规定应用程序的数据格式。
  2、传输层:建立端口到端口的通信
  3、网络层:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
  4、数据链路层:定义了电信号的分组方式
  5、物理层:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

猜你喜欢

转载自www.cnblogs.com/xiugeng/p/8965640.html