Socket

作者: 宣十三 | 来源:发表于2018-03-08 09:43 被阅读0次

    网络基础

    计算机网络共分为五层:

    应用层

    运输层            >>通过端口把数据传到目的主机的目的进程,来实现进程和进程之间的通信

    网络层             >> 负责根据IP找到目的地址的主机

    数据链路层

    物理层

    端口号(PORT)

    端口号规定为16位,即允许一个IP主机有2的16次方65536个不同的端口

    其中 :0 ~ 1023 分配给系统的端口号(我们不能乱用)

            :1024 ~ 49151 登记端口号,主要是供第三方应用使用

            :49152 ~ 65535  短暂端口号,是留给客户进程选择暂时使用,一个进程使用完就可以                                            供其他进程使用

    (在socket使用时,可以用1024 ~ 65535 的端口号)

    C/S结构

    定义:即客户端/服务器结构,是软件系统体系结构。

    作用:充分利用两端硬件环境的优势,将任务合理分配到Cliect端和Server端来实现,降低系统的通讯开销

    从下面图片可以看出,Socket使用可以基于TCP或者UDP协议

    TCP协议

    定义:Transmission Control Protocol,即传输控制协议,是一种传输层通讯协议。

                "基于TCP应用层协议有:FTP,Telent,HTTP,POP3,DNS"

    特点:

                面向连接:指要使用TCP传输协议,必须先建立TCP连接,传输完成后释放连接,就                                   像打电话一样必须先输号建立一条连接,打完后挂断释放连接。

                面向字节流:流,指的是流入到进程或从进程流出的字符序列。

                全双工通信:一但建立TCP连接,通信双方可以在任意时候发送数据。

                可靠:指通过TCP间接传输的数据,无差错、无丢失、不重复,并且按序到达。

    TCP建立间接:

            必须进行三次握手,如A与B进行连接,则必须

            第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence                                 Number为x;然后客户端进入SYN_SEN状态,等待服务端确认。即A发送                                   信息给B。

            第二次握手:服务端收到客户端的SYN报文段,需要对这个SYN报文段进行确认。即B收                                 到连接信息向A返回确认信息。

            第三次握手:客户端收到服务器的(SYN+ACK)报文段,并向服务器发送ACK报文段。                                 即A收到确认信息后再向B返回确认连接信息。

            至此A告诉自己上层连接建立;B收到连接信息后告诉上层连接建立。

    UDP协议

    定义:User Datagram Protocol,即用户数据报协议,是一种传输层通讯协议。

                “基于UDP的应用层协议有TFTP,SNMP,DNS”

    特点:

                无连接的:和TCP建立连接不同,UDP传输数据不需要建立连接,就像写信在信封写                                  上收件人名字,地址交给邮局发送就可以了。至于能不能到剩下就看邮局                                    的了。

                不可靠的:因为UDP发出去的数据包发出去就不管了,所以很可能出现丢包现象,使                                   传输的数据出错。

                面向报文:数据报文,相当于一个数据包,应用层交给UDP多大的数据包,UDP都照                                   常发送,不会像TCP那样拆分。

                没有拥塞控制:拥塞,是指到达通信子网中某一部分的分组数量过多,使得该部分网                                           络来不及处理,以至引起这部分乃至整个网络性能下降的现象,严重                                           时甚至会导致网络通信业务陷入停顿,即出现死锁现象。

    应用场景:

    很多实时应用(如IP电话,实时视频会议等)要求源主机以很定的速率发送数据,并且允许网络发生拥塞时丢失一些数据,但是要求不能有太大的延迟,UDP就刚好适合这种要求,所以只有不适合的技术,没有正真没用的技术

    Socket

    定义

    即套接字,是一个对TCP/IP协议进行分装的编程调用接口(API)

    通过socket,我们才能在android平台上通过TCP/IP协议进行开发

    socket不是一种协议,而是一个编程调用接口(api)属于传输层

    成对出现,一对套接字

    Socket = {(IP地址1,RORP端口号), (IP地址2,RORP端口号)}

    原理

    socket的使用类型主要有两种

    流套接字(streamsocket):基于TCP协议,采用流的方式提供可靠的字节流服务

    数据报套接字(datagramsocket):基于UDP协议,采用数据报文提供数据打包发送的服务

    “原理如下”

    Socket与Http的对比

    Socket属于传输层,因为TCP/IP协议属于传输层,解决的是数据如何在网络中传输的问题

    Http协议属于应用层,解决的是如何包装数据

    http:采用请求 - 响应方式

    1、建立网络连接后,当客户端向服务端发送请求,服务端才能向客户端返回数据

    2、可以理解为,是客户端有需要才会进行通信

    Socket:采用服务器主动发送数据的方式

    1、即建立网络以后,服务器可主动发送消息给客户端,而不需要客户端向服务器发送请求

    2、可以理解为,是服务器有需要才会进行通信

    相关文章

      网友评论

          本文标题:Socket

          本文链接:https://www.haomeiwen.com/subject/czlttftx.html