计算机网络之Socket编程

文章目录

  • 前言
  • 一、Socket编程
  • 二、TCP套接字编程
  • 三、UDP套字编程
  • 总结


前言

TCP、UDP套接字编程


一、Socket编程

应用进程使用传输层提供的服务才能够交换报文,实现应用协议,实现应用

  • TCP/IP:应用进程使用Socket API访问传输服务
  • 地点:界面上的SAP(Socket)方式:Socket API
  • 目标:学习如何构建能借助sockets进行通信的C/S应用程序
  • socket:分布式应用进程之间的门,传输层协议提供的端到端服务接口

2种传输层服务的socket类型:

  • TCP:可靠的、字节流的服务
  • UDP:不可靠(数据UDP数据报)服务

计算机网络之Socket编程_第1张图片

二、TCP套接字编程

  • 套接字:应用进程与端到端传输协议(TCP或UDP)之间的门户
  • TCP服务:从一个进程向另一个进程可靠地传输字节流

服务器首先运行,等待连接建立

  • 1:服务器进程必须先处于运行状态
    • 创建欢迎socket
    • 和本地端口捆绑
    • 在欢迎socket上阻塞式等待接收用户的连接

客户端主动和服务器建立连接:

  • 2:创建客户端本地套接字(隐式捆绑到本地port)
    • 指定服务器进程的P地址和端口号,与服务器进程连接
  • 4:连接API调用有效时,客户端P与服务器建立了TCP连接
  • 3:当与客户端连接请求到来时
    • 服务器接受来自用户端的请求,解除阻塞式等待,返回一个新的socket(与欢迎socket不一样),与客户端通信
    • 允许服务器与多个客户端通信
    • 使用源IP和源端口来区分不同的客户端

从应用程序的角度

  • TCP在客户端和服务器进程之间提供了可靠的、字节流(管道)服务

TCP Socket编程
C/S模式的应用样例:

  • 1)客户端从标准输入装置读取一行字符,发送给服务器
  • 2)服务器从socket读取字符
  • 3)服务器将字符转换成大写,然后返回给客户端
  • 4)客户端从socket中读取一行字符,然后打印出
  • 实际上,这里描述了C-S之间交互的动作次序

计算机网络之Socket编程_第2张图片
计算机网络之Socket编程_第3张图片
计算机网络之Socket编程_第4张图片
计算机网络之Socket编程_第5张图片
计算机网络之Socket编程_第6张图片
计算机网络之Socket编程_第7张图片

三、UDP套字编程

  • UDP:在客户端和服务器之间没有连接

    • 没有握手
    • 发送端在每一个报文中明确地指定目标的IP地址和端口号
    • 服务器必须从收到的分组中提取出发送端的IP地址和端口号
  • UDP:传送的数据可能乱序,也可能丢失

  • 进程视角看UDP服务

    • UDP为客户端和服务器提供不可靠的字节组的传送服务

计算机网络之Socket编程_第8张图片
计算机网络之Socket编程_第9张图片
计算机网络之Socket编程_第10张图片


总结

  • 应用程序体系结构
    • 客户-服务器
    • P2P
    • 混合
  • 应用程序需要的服务品质描述:
    • 可靠性、带宽、延时、安全
  • Internet传输层服务模式
    • 可靠的、面向连接的服务:TCP
    • 不可靠的数据报:UDP
  • 流行的应用层协议:
    • HTTP
    • FTP
    • SMTP,POP,IMAP
    • DNS
  • Socket编程
  • 应用层协议报文类型:请求/响应报文:
    • 客户端请求信息或服务
    • 服务器以数据、状态码进行响应
  • 报文格式:
    • 首部:关于数据信息的字段
    • 数据:被交换的信息
  • 控制报文vs.数据报文
    • 带内、带外
  • 集中式vs.分散式
  • 无状态vs.维护状态
  • 可靠的vs.不可靠的报文传输
  • 在网络边缘处理复杂性

一个协议定义了在两个或多个通信实体之间交换报文的格式和次序、以及就一条报文传输和接收或其他事件采取的动作

你可能感兴趣的:(计算机网络,计算机网络)