<Linux>网络基础,TCP/IP模型

了解TCP/IP五层结构(或四层,省略物理层)

TCP/IP结构中,每层有每层不同的职责,每一层都会在下一层所提供的网络来完成自己的需求

  • 应用层: 应用层就是我们所使用的程序工作的层级,用来发送我们要传输的
            原始数据。
  • 传输层: 传输层用传输协议控制信息,保证两天主机间的数据传输
  • 网络层: 负责地址管理与路由选择,通过ip地址来识别主机,并通过路
            由表的方式规划两台主机间的数据传输线路
  • 数据链路层: 负责设备间数据帧的传输与识别
  • 物理层: 负责光电信号的传输,也就是1010001的高低电平

数据包在各层的封装与分用

数据在传输前,会通过tcp每一层结构,而每一层都会对上一层的数据进行封装
在这里插入图片描述

  • 应用层数据称为,应用数据
  • 传输层称为,数据段
  • 网络层称为,数据报
  • 数据链路层称为,数据帧

物理层将上层数据转换为光电信息

而数据分用,是将最终的数据传输给另一个主机B,主机B自下而上,一层一层拆解,得到原始数据的过程


IP地址与端口

IP地址:为了在网络中多个终端中找到我们所要发送数据的目的机器,就需要IP地址来识别唯一一台主机
端口:为了识别当前主机的一个线程

IP地址的格式是以uint32_t,也就是无符号的32位整型形式,并以点分十进制表示:如174.168.2.33,每一端最高到255,因为一个字节8位最多能表示256个十进制数。

端口的格式时以uint16_t,就是无符号16类整型形式,能表示的范围时0~66535,但有些端口会被已知的服务占用,如http端口80,https端口443,mysql端口3306,都是已经被占用而无法被使用的。

既然端口用来指明需要用到的线程,不使用PID的原因是:线程中断重新启动时,PID会被重置,不会是原来的PID,所以需要用端口来指明所要用到的线程

在这里插入图片描述
为了方便识别和传输,会将目的地址与源地址一起传送到目的主机
此时会涉及到计算机大小端字节序问题。

小端: 低地址存放低位数据
大端: 低地址存放高位数据
一般网络字节序都是大端字节序,是网络通信的标准,
而小端机器进行网络通信时就需要进行大小端转换
大小端转换的接口
ip地址转换
uint32_t htonl(uint32_t hostl)将主机地址字节序转换位网络地址字节序
反过来uint32_t ntohl(uint32_t netl)就是将网络地址字节序转换位主机地址字节序

端口转换 与ip相同,short型
uint16_t htons(uint16_t hosts)将主机端口字节序转换位网络端口字节序
反过来uint16_t ntohl(uint16_t nets)就是将网络端口字节序转换位主机端口字节序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值