zoukankan      html  css  js  c++  java
  • socket网络通信

    1、socket通常也称作“套接字”,用于描述IP地址和端口。在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务。

    2、网络基础知识

        1、IP地址:IP网络中每台主机具有唯一的ip地址,ip地址是一个逻辑地址,因特网上的ip地址是唯一的。IPV4由4个字节组成,经常以点分十进制表示

      2、七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。每层都规定了完成的功能以及相应的协议

             物理层:提供二进制传输,确定在通信道路上如何传输比特流

             数据链路层:提供介质访问,加强物理层的传输功能,建立一条无差错的传输路线

             网络层:提供IP寻址和路由,因为在网络上数据可以有多条道路到达目的地,网络层负责找出最佳的传输线路

             传输层:为源主机到目的主机提供可靠的数据传输服务,隔离网络的上下层协议,使得网络层与下层协议无关

             会话层:在两个相互通信的应用进程之间建立,组织和协调其相互之间的通信

             表示层:处理被传送数据的表示问题

             应用层:为用户的网络应用程序提供网络通信的服务

    3、协议:

          应用层协议:文件传输协议(ftp), 超文本传输协议(http)

      传输层协议:

             1、tcp:面向连接的可靠传输协议,利用tcp进行网络通信时,首先要通过三次握手,以确立双方的连接,一旦连接建立好,就可以进行通信了,tcp提供了数据确认和数据重传机制,保证了发送的数据一定会到达通信的对方

             2、udp:udp是无连接的,不可靠的传输协议,采用udp进行通信时,不需要建立连接,可以直接向一个ipd地址发送数据,但是对方是否收到就无法确认了。(所以会发生丢包)

    4、流式套接字:提供面向连接,可靠的数据传输服务,数据无差错,无重复的发送,且按照发送顺序接收,基于tcp协议实现的

         数据报式套接字:提供无连接服务,数据包以独立形式发送,不提供无错保证,数据可能丢失或者重复,是基于udp协议实现的。

    5、tcp/ip是什么?

         tcp/ip是个协议组,可分为三个层次:网络层,传输层和应用层

         在网络层有ip协议

         在传输层有tcp协议和udp协议

         在应用层有ftp,http

    6、socket是什么?

        socket是应用层与tcp/ip协议组通信的中间软件抽象层,一组接口,把复杂的tcp/ip协议隐藏在socket接口后面

        所以http就是tcp/ip应用层的协议,socket是他们的软件抽象层

    7、短连接: 连接->传输数据—>关闭连接

        http是无状态的,浏览器和服务器每进行一次http操作,就联立一次连接,但任务结束就中断连接

        也可以这样说:短连接是指socket连接后发送后接收完数据后马上断开连接

    8、长连接:

        连接->传输数据->保持连接->传输数据->.....->关闭连接

       长连接是指建立socket连接后不管是否使用度保持连接,但安全性较差

    9、tcp与udp编程

        基于tcp(面向连接)的socket编程的服务端的流程:

            1、创建套接字(socket)

            2、将套接字绑定到一个本地地址和端口上(bind)

            3、将套接字设置为监听模式,准备接收客户端请求(listen)

            4、等待客户端请求到来,当请求到来时,接受连接请求,返回一个新的对应与此次连接的套接字(accept)

            5、用返回的套接字和客户端进行通信(send/recv)

            6、返回,等待另外的客户请求

            7、关闭套接字

        基于tcp的socket编程的客户端的程序流程如下:

            1、创建套接字(socket)

            2、向服务器发起连接请求(connect)

            3、和服务器机进行通信(send/recv)

            4、关闭套接字

         在服务端,当调用accept函数时,程序就好等待,等待客户端调用connect函数发出连接请求,然后服务器接受请求,之后连接建立,服务器和客户端就可以使用send和recv进行通信了

        基于udp(面向无连接的)socket编程

         服务端也叫接收端,对于基于udp的编程来说,先启动的成为服务端,发送数据的成为客户端

  • 相关阅读:
    02 日志系统: 一条SQL 更新语句是如何执行的
    MySql 实战45讲笔记 : 01
    爬取boss直聘全国招聘数据并做可视化
    爬取豆瓣电影-长津湖短评
    尝试破解压缩文件
    将webp格式的图像批量转化成jpg
    将JPG格式图片转换成PNG格式
    几个学习编程的游戏网站
    检测网址连接有效性
    监控设备电池电量并发送通知
  • 原文地址:https://www.cnblogs.com/puyahuazhijia/p/5938044.html
Copyright © 2011-2022 走看看