从网络基础到游戏服务器(一)

一、TCP/IP 五层协议栈  与  OSI七层协议栈

产生:开放系统互联(OSI) 是由国际标准化组织(ISO)于70年代提出的七层模型。比因特网协议还早。

区别:七层协议多了会话层和表示层,这两层其实被因特网协议包含在了应用层中。

  应用层 提供应用接口和网路服务:HTTP/FTP/DNS
  表示层 数据压缩、数据加密、数据描述
应用层 会话层 建立、管理、终止表示层体之间的会话
运输层 运输层 建立了端到端的连接:TCP、UDP
网路层 网络层 通过IP寻址建立两个节点之间的连接
链路层 链路层 比特组成字节、字节组成帧。使用链路层地址来访问介质,选择合适的路由和交换节点:以太网、WIFI
物理层 物理层 通过物理介质传输比特流:双绞线、光纤
因特网协议 OSI七层模型 详细解释

 

二、TCP/IP 协议

产生:70年代美国国防部为ARPANET广域网开发的网络体系结构和标准。他是一个协议族,包含一组协议,只是因为TCP和IP最有代表性,所以叫TCP/IP协议。

主要包含:

应用层 Telnet、FTP、SMTP
传输层 UDP、TCP
网络层 IP、ICMP、IGMP
链路层 ARP、RARP

1)IP协议  Internet Protocol 网际互连协议

组成:首部和数据两部分组成

首部 数据
20字节定长 可选字段,不定长
  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 版本 首部长度 服务类型 总长度
4 标识(片ID) R DF MF 片偏移
8 生存时间 协议 首部检查和
12 源地址
16 目的地址
20 选项
24 数据

MTU:最大传输单元

分片:如果IP数据包总长度超过了MAC帧MTU,则数据包需要分片。

特点:不可靠、无连接

2)TCP协议  Transmission Control Protocol  传输控制协议

组成:首部和数据两部分组成

  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 源端口号 目的端口号
4 序号
8 确认号
12 首部长度        保留未用  CWR  ECE  URG  ACK  PSH   RST SYN   FIN 接收窗口            
16 校验和 紧急数据指针
20 选项
24 数据

MSS:最大报文段长度

序号:字节流中每个字节都按顺序编号

确认号:期望收到下一个报文第一个字节的序号

接收窗口:指示接收方愿意接收的字节数量

 TCP三次握手:

 四次握手(连接断开):

 

三、字节序

如果发送的数据是大端序,而接收方是小端序,那么接收到的数据就与想要传达的数据不一致了。

Q. 那么什么数据需要大小端转换?

A. 一个int需要4个字节,如果4个字节大小端顺序不一致,最终表达出来的数字也不一致,所以int需要大小端转换。

string本质上是char数组,一个字符占1个字节,1个字节无论大小端都是一样的,所以string和char类不需要大小端转换。

=>什么数据需要网络传输而且还是int类型呢?  IP和Port啊!

大端:网络字节序,低位字节存在高地址位 (套接字通信:收发数据、IP地址、端口  都是大端存储)

小端:主机字节序,低位字节存在低地址位

相关方法:

  主机字节序的IP地址转换为网络字节序:inet_pton

  大端整型数转换为小端点分十进制IP地址:inet_ntop

  点分十进制IP转换为大端整型数: inet_addr

  大端整型数转换为点分十进制IP:inet_ntoa

 

 

推荐阅读:套接字-Socket

推荐视频:并发网络通信-套接字通信(C/C++ 多线程)

posted @ 2022-07-16 21:47  番茄玛丽  阅读(41)  评论(0编辑  收藏  举报