网络传输-Socket
目录
- 网络基础
- Socket
一、网络基础
网络协议
网络协议是互联网进行数据交换的标准,通过实现网络协议达到与互联网任意目标交换数据,所以说网络协议是进行通信的基础。计算机网络的协议就是网络中两个实体之间控制数据通信的规则和约定的集合
TCP/IP协议组
网络协议中最著名是TCP/IP 即传输控制协议和网际协议,TCP/IP与ISO七层建模不同,它从底层到上一共有4层构成:
- 应用层 : 包括协议-> HTTP(超文本传输协议)、FTP(文件传输协议)、SRTP(简单邮件传输协议)、DNS(域名解析协议)
- 传输层:提供操作系统进程端到端的通信 包括协议-> TCP(传输控制协议)、UDP(用户报协议)
- 网络层: 提供主机端到端的通信 包括协议-> IP (网际协议)、ARP(地址协议协议)、ICMP(因特网控制消息协议)、
-
数据链路层:SLPP(串行线路协议) 、PPP(点到点协议)
TCP/IP 各个层的工作原理
应用层工作原理:
传输层工作原理:
第一部分是报头,包含如下信息:固定20个字节
- 源主机ip、目标主机ip 地址 各占4个字节即32位
- 请求序号、确认序号各自占用 4个字节即32位
- 头部长度占4位,预留6位作为保留字段,暂时没有什么用处
- URG(紧急指针字段)、SYN(请求同步序号序号,syn=1,ack=0代表一次请求,syn=1,ack=1,代表一次请求被相应)、ack(接受者生成的确认接受数据有效序号)
5.16位控制流量窗口的设置地址占2个字节 - 校验和:长度为16位,2个字节。
- 紧急指针:长度为16位,2个字节。
第二部分是数据体:data
网络层工作原理:
链路层工作原理:
二、Socket
Socket诞生的原因
当我们需要两个进程进行信息传递时,我们知道关键是每个进程需要有一个唯一的标识才可以,本机计算机中每个进程的标示可以确保其唯一性,但是不同主机的进程可能存在重复性,为了解决这个问题,刚好IP协议可以唯一的标示一台主机,TCP协议中的协议和端口可以唯一标示一个进程,由此巧妙解决了不同主机进程通信的问题。
Socket概述:
Socket是基于TCP/IP的封装,是通信的基石,是支持TCP/IP协议通信的基本单元,是应用层和TCP/IP通信协议组之间的中间软件层,通过三元件ip、协议加端口实现不同计算机之间特定进程之间的通信。
socket 测试工具
由于在xcode 里开发了 客户端的socket 用java开发的socket 没有办法测试 我找到了一款强大的测试工具 :
https://juejin.im/post/5a77cb456fb9a0634e6c6c14