Python-22-TCP和Socket

TCP和Socket

一、TCP

0. 网络分层

  • OSI:(Open System Interconnection Reference Model)开放系统互联模型。(自顶向下)
分层名称描述
第七层应用层开发程序之后产生的数据
第六层表示层将应用程序的数据进行打包、压缩、加密等待
第五层会话层用于创建、管理、关闭网络应用程序的会话
第四层传输层定义了进程到进程之间的数据传输。port
第三层网络层定义了IP到IP之间的数据传输。路由器,ip地址
第二层数据链路层定义了主机网卡到网卡之间的数据传输。交换机。mac地址
第一层物理层定义了数据传输的介质。网线、网卡
  • TCP/IP四层模型
分层协议
应用层(应用层、表示层、会话层)http、https、ftp、SMTP
传输层(主机到主机层)TCP、UDP
网际层(网络层)IP、ARP
网络接入层EnterNET

1. 网络应用之间的通信流程

当网络中的应用需要进行通信,首先需要建议数据通信的协议。

确定协议之后创建连接,开始收发消息。当通信结束之后,需要关闭这个通信的连接,释放资源。

在目前的互联网环境中,网络应用使用的协议主要为TCP

2. TCP的概念

TCP:(Transmission Contal Protocol传输控制协议。它是一种面向连接、可靠的、安全的数据传输协议。TCP报文是基于数据流(Steam)。

UDP:(User Datagram Protocol用户数据报协议。它是一种无连接、不可靠的,基于数据报(Datagram)的数据传输协议。

3. TCP的特点

  • 面向连接:在应用程序通信之前,需要使用TCP建立连接,然后进行通信,再关闭连接
  • 安全可靠
    • 错误重传
    • 超时重传
    • 数据报文是有序

4. 三次握手和四次挥手

  • 三次握手
    • 第一次握手:客户端发送一个【SYN】同步包给服务端
      • Seq = X
    • 第二次握手:服务端发送一个【ACK】确认包给客户端
      • Ack = X + 1
      • Seq = Y
    • 第三次握手:客户端发送一个【ACK】确认包给服务端
      • Ack = Y + 1
  • 四次挥手
    • 第一次挥手:客户端发送一个【FIN】断开包给服务端
      • Seq = X
    • 第二次挥手:服务端发送一个【ACK】确认包给客户端
      • Ack = X + 1
    • 第三次挥手:服务端发送一个【FIN】断开包给客户端
      • Seq = Y
    • 第四次挥手:客户端发送一个【ACK】确认包给服务端
      • Ack = Y + 1

二、Socket

1. 概念

Socket(套接字),是进程与进程之间传输数据的载体。
举例:

  • IP和端口,相当于手机号码;
  • TCP:相当于语法种类;
  • Socket:手机(基带、射频元件)

进程之间想要进程通信就需要基于套接字

2. 作用

Socket负责进程之间数据的传输,好比数据的搬运工。

在计算机行业内,只要与网络应用通信的软件都使用了Socket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值