Scoket编程基础 -- TCP 和 UDP 的 简介及其区别

TCP/IP定义以及模型各层的概念

  • TCP/IP(Transmission Control Protocol/Internet Protocol):即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。
  • UDP(User Data Protocol,用户数据报协议):是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。
  • 应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用以及应用协议,也有许多的企业商业应用和互联网应用。
  • 传输层 (Transport):传输层包括 UDP 和 TCP,UDP 几乎不对报文进行检查,而 TCP 提供传输保证。
  • 网络层 (Network):网络层协议由一系列协议组成,包括 ICMP、IGMP、RIP、OSPF、IP(v4,v6) 等。
  • 链路层 (Link):又称为物理数据网络接口层,负责报文传输。

Socket相关概念

IP地址:

  • 每台联网的电脑都有一个唯一的IP地址。
  • 长度32位,分为四段,每段8位,用十进制数字表示,每段范围 0 ~ 255
  • 特殊IP:127.0.0.1 用户本地网卡测试
  • 版本:V4(32位) 和 V6(128位,分为8段,每段16位)

端口:

  • 在网络上有很多电脑,这些电脑一般运行了多个网络程序。每种网络程序都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的网络程序。
  • 常用端口:21 FTP ,25 SMTP ,110 POP3 ,80 HTTP , 443 HTTPS
    有两种常用Socket类型:
  • 流式Socket(STREAM):是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低
  • 数据报式Socket(DATAGRAM):是一种无连接的Socket,对应于无连接的UDP服务应用.不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高.

Socket定义

  • Socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)
  • Socket非常类似于电话插座。以一个电话网为例。电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket;同时要知道对方的号码,相当于对方有一个固定的Socket。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向Socket发送数据和从Socket接收数据。通话结束后,一方挂起电话机相当于关闭Socket,撤消连接。
    • 人通过【电话】可以通信
    • 程序通过【Socket】来通信。
    • 套接字 就是 程序间的 电话机。

Socket流式(服务器端和客户端)

  1. 服务端welcoming socket 开始监听端口(负责监听客户端连接信息)
  2. 客户端client socket连接服务端指定端口(负责接收和发送服务端消息)
  3. 服务端welcoming socket 监听到客户端连接,创建connection socket(负责和客户端通信)

Socket流式(服务器端和客户端)
服务器端的Socket(至少需要两个)

  • 一个负责接收客户端连接请求(但不负责与客户端通信)
  • 每成功接收到一个客户端的连接便在服务端产生一个对应的负责通信的Socket
    在接收到客户端连接时创建.
  • 为每个连接成功的客户端请求在服务端都创建一个对应的Socket(负责和客户端通信).
    客户端的Socket
  • 客户端Socket,必须指定要连接的服务端IP地址和端口。
    通过创建一个Socket对象来初始化一个到服务器端的TCP连接

Socket的通讯过程
服务器端:

  • 申请一个socket
  • 绑定到一个IP地址和一个端口上
  • 开启侦听,等待接授连接
  • 服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听。
    客户端:
    申请一个socket
    连接服务器(指明IP地址和端口号)

Socket的构造函数
连接通过构造函数完成。
public Socket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)

  • AddressFamily 成员指定 Socket 用来解析地址的寻址方案。例如,InterNetwork 指示当 Socket 使用一个 IP 版本 4 地址连接。
  • SocketType 定义要打开的 Socket 的类型
  • Socket 类使用 ProtocolType 枚举向 Windows Sockets API 通知所请求的协议

Socker编程TCP 和 UDP 对比
1.基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息。
  使用Tcp协议通讯需要具备以下几个条件:
    (1).建立一个套接字(Socket)
    (2).绑定服务器端IP地址及端口号–服务器端
    (3).利用Listen()方法开启监听–服务器端
    (4).利用Accept()方法尝试与客户端建立一个连接–服务器端
    (5).利用Connect()方法与服务器建立连接–客户端
    (5).利用Send()方法向建立连接的主机发送消息
    (6).利用Recive()方法接受来自建立连接的主机的消息(可靠连接)
    
tcp

UDP:
基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低。至于可靠性,可通过应用层的控制来满足。(不可靠连接)

  1. 建立一个套接字(Socket)
  2. 绑定服务器端IP地址及端口号–服务器端
  3. 通过SendTo()方法向指定主机发送消息 (需提供主机IP地址及端口)
  4. 通过ReciveFrom()方法接收指定主机发送的消息 (需提供主机IP地址及端口)
    udp

TCP协议和UDP协议连接过程的区别:

  1. 基于连接与无连接;
  2. 对系统资源的要求(TCP较多,UDP少);
  3. UDP程序结构较简单;
  4. 流模式与数据报模式 ;
  5. TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值