zoukankan      html  css  js  c++  java
  • web协议相关知识

    网络中进程如何通信?

            首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!

            在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。

            其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。

            这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

    什么是socket?

            Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。

            我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

    socket基本操作

            socket是“open—write/read—close”模式的一种实现。

            socket()方法:对应于普通文件的打开操作。

            bind()方法:把一个地址族中的特定地址赋给socket。例如对应AF_INET、AF_INET6就是把一个ipv4或ipv6地址和端口号组合赋给socket。

            listen()方法:来监听这个socket。如果客户端这时调用connect()发出连接请求,服务器端就会接收到这个请求。

            connect()方法:客户端通过调用connect函数来建立与TCP服务器的连接。

            accept()方法:TCP服务器监听到这个请求之后,就会调用accept()函数取接收请求,这样连接就建立好了。之后就可以开始网络I/O操作了,即类同于普通文件的读写I/O操作。

            read() write()方法:万事具备只欠东风,至此服务器与客户已经建立好连接了。可以调用网络I/O进行读写操作了,即实现了网咯中不同进程之间的通信!

            close()方法:完成了读写操作就要关闭相应的socket描述字,好比操作完打开的文件要调用fclose关闭打开的文件。

            tcp的三次握手就发生在 connect()---accept()-----connect()-----accept()方法中!!!!!!

                    四次挥手是close()---- read()---- close()

  • 相关阅读:
    android activity状态保存
    android的5个进程等级
    android什么时候会产生ANR
    android压力测试monkey简单使用
    CodeIgniter学习笔记五:分页,文件上传,session,验证码
    CodeIgniter学习笔记四:CI中的URL相关函数,路由,伪静态,去掉index.php
    Scrapy使用示例
    CodeIgniter学习笔记三:扩展CI的控制器、模型
    Queries for Number of Palindromes(区间dp)
    Dungeon Master(三维bfs)
  • 原文地址:https://www.cnblogs.com/yuzhaoblog/p/14515228.html
Copyright © 2011-2022 走看看