复习网络编程UTP和TCP

第一次写博客

纪录一下自己开始学着写博客,以后会将自己学习到的东西和遇到的难题及解决方案也给写进去,文采太烂了,要是哪里写的不好或者是有错误还请大佬留言提出来,我发现会在第一时间进行修改,互相学习,希望能提高自己的能力。

网络通信概述

  1. 引入;
    如果没有网络,就不能快速的将信息发送给对方;
  2. 什么是网络;
    网络就是一种辅助双方或者多方能够连接在一起的工具;
  3. 使用网络的目的;
    就是为了联通多方然后进行通信用的,即把数据从一方传递给另外一方
    前面的学习编写的程序都是单机的,即不能和其他电脑上的程序进行通信
    为了让在不同的电脑上运行的软件,之间能够互相传递数据,就需要借助网络的功能;
  4. 小总结;
    使用网络能够把多方链接在一起,然后可以进行数据传递
    所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信

UTP

用户数据报协议,是一个简单的面向数据报的运输层协议。
特点:

  1. 面向无连接(UDP在传输数据报前不用在客户端和服务端之间建议连接);

  2. 每个数据包大小限制在64k内(UTP发送数据是将数据分解成多个包进行发送);

  3. UTP不提供可靠性(因为是面向无连接);

  4. 传输速度快(因为不需要建立连接);

TCP

传输控制协议,提供是面向连接,可靠的字节流服务。
特点:

  1. 当客户端与服务端进行交互数据前,必须先在彼此之间建立 一个TCP连接,之后再传输数据。

  2. TCP提供可靠性,提供数据超时重发,筛选丢弃重复数据,检验数据,流量控制等功能。

  3. 注意点

    1. TCP服务器一般情况下都需要绑定,否则客户端找不到这个服务器

    2. TCP客户端一般不绑定,因为是主动链接服务器,所以只要确定好服务器的ip、port等信息就好,本地客户端可以随机

    3. TCP服务器中通过listen可以将socket创建出来的主动套接字变为被动的,这是做TCP服务器时必须要做的

    4. 当客户端需要链接服务器时,就需要使用connect进行链接,UDP是不需要链接的而是直接发送,但是TCP必须先链接,只有链接成功才能通信

    5. 当一个TCP客户端连接服务器时,服务器端会有1个新的套接字,这个套接字用来标记这个客户端,单独为这个客户端服务

    6. listen后的套接字是被动套接字,用来接收新的客户端的链接请求的,而accept返回的新套接字是标记这个新客户端的

    7. 关闭listen后的套接字意味着被动套接字关闭了,会导致新的客户端不能够链接服务器,但是之前已经链接成功的客户端正常通信。

    8. 关闭accept返回的套接字意味着这个客户端已经服务完毕

    9. 当客户端的套接字调用close后,服务器端会recv解堵塞,并且返回的长度为0,因此服务器可以通过返回数据的长度来区别客户端是否已经下线

TCP的三次握手

  1. tcp是稳定可靠的传送方式,在接收、发送之前,双方需要建立一个虚拟的通道,这个过程称为3次握手

  2. 3次握手的流程是:

    1. 客户端调用connect时发送一个带有标号的数据,我们把建立连接时的第1次数据叫做(SYN)其中有1个数字,例如1

    2. 服务器的接收到这个数据,然后回送一个 数据,这个数据中 有2个部分 SYN+ACK

      1. ACK是对接收到的数据的确认,此时的数值为2
      2. SYN表示要向客户端发送的数据,例如可以是3
      3. tcp是稳定可靠的传送方式,在接收、发送之前,双方需要建立一个虚拟的通道,这个过程称为3次握手
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值