Socket网络

注释

Socket网络的初步学习

 

 

1、什么是Socket?


    Socket套接字是应用层(用户进程)与运输层(tcp和udp)之间的软件抽象层,可以用来实现不同计算机之间的通信。具有实时性、
    长连接的特点,在设计模式中相当于门面模式。


2、Socket的使用流程?


    见图


3、什么是Tcp/Udp?


    就是一个运输层传输协议


4、Tcp和Udp的区别?


    1、Tcp是面向连接的协议,也就是在发送数据前,必须和对方建立可靠的连接。
    一个Tcp的链接必须经过三次握手才能连接,四次挥手关闭连接。
    2、Udp是一个非连接的协议,传输数据之前双方不建立连接。当它想传送时就简单的抓取来自
    应用程序的数据,并尽可能快的把它扔到网络上。
    3、Tcp保证数据的正确性,Udp可能丢包。
    4、Tcp保证数据的传输顺序,UdP不保证。


5、Tcp的三次握手和四次挥手?


    三次握手:


        客户端向服务器发送连接请求。
        服务器收到消息响应,向客户端进行确认。
        客户端在向服务器表示确认。
    这个过程是在客户端的connect()和服务器的Accept()函数中的。


    四次挥手:


        客户端发送中断请求。
        服务器得到消息,继续处理未处理完的资源。
        服务器处理完毕通知客户端可以断开。
        客户端收到确认信息,表示断开。


6、Tcp粘包分包问题的出现?如何解决?


    粘包:


        所谓粘包就是通讯的一端一次性连续发送多条数据包,tcp协议会将多个数据包打包成一个报文发 
        送出去。
        产生原因:
            1、要发送的数据小于Tcp发送缓冲区的大小。
            2、数据发送过快,导致数据包堆积多个数据后才一次性发送。
        解决方法:
            1、客户端在发送数据包的时候采用包头+包体的方式,包头表示上包体的长度,服务器接收后    
            根据长度来解析包体。
            2、将每个数据包封装成固定的长度,不够的用0填充。
            3、可以在数据包中设置特殊符号,接收端通过特殊符号来拆分


    拆包:


        就是通讯的一端发送的数据包超过tcp报文所能传输的最大值,就会将一个数据包拆分成多个数据            
        包分开传输。
        产生原因:
            1、传输数据大于tcp传输最大值
        解决方法:    
            1、也是传输数据包的时候加上数据的长度,,服务端接收到数据后,先读取四个字节的int 
        值,然后再读取对应长度的字节数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值