Linux网络编程 网络基础知识

这篇具有很好参考价值的文章主要介绍了Linux网络编程 网络基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.网络的历史和协议的分成

2.网络互联促成了TCP/IP协议的产生

3.网络的体系结构

4.TCP/IP协议族体系

5.网络各层的协议解释

6.网络的封包和拆包

7.网络预备知识     


1.网络的历史和协议的分成

Internet-"冷战"的产物
1957年十月和十一月,前苏联先后欧两颗”Spuinik”卫星上天
1958年美国总统艾森豪威尔向美国国会提出建立DARPA,即国防部高级研究计划署,简称ARPA.1968年6月DARPA提出“资源共享计算机网络”,目的在于让DARPA的所有电脑互连起来,这个网络就叫做ARPAnet,即“阿帕网”,是Internet的最早雏形。

2.网络互联促成了TCP/IP协议的产生

早期的ARPAnet使用网络控制协议,不能互联不同类型的计算机和不同类型的操作系统,没有纠错功能

1973年有Rober Kahn 和 Vinton Cerf 两人合作为ARPAnet开发了新的互联网协议

1974年12月两人正式发表第一份TCP协议详细说明,但此协议在有数据包丢失时不能有效的纠正

TCP协议分成了两个不同的协议:

  • 用来检测网络传输中差错的传输控制协议TCP
  • 专门负责对不同网络进行互联的互联网协议IP
  • 从此TCP/IP协议诞生

1983年ARPAnet上停止使用NCP,互联网上的主机全部使用TCP/IP协议,TCP/IP协议成为Internet中的“世界语”。

3.网络的体系结构

  • 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起
  • 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务。
  • 网终体系结构即指网络的层次结构和每层所使用的协议的集合
  • 两类非常重要的体系结构:OSI和 TCP/IP。Linux网络编程 网络基础知识,网络编程,Linux学习记录,网络,linux,服务器
  • OSI模型相关的协议已经很少使用,但模型本身非常通用                                                             OSI模型是一个理想化的模型,尚未有完整的实现
  • OSI模型共有七层
  • 二层交换机,三层交换机

4.TCP/IP协议族体系

  • TCP/IP协议族体系是Internet事实上的工业标准
  • 一共有四层
应用层 Relnet,FTP,HTTP,DNS,SMTP等
传输层 TCP和UDP
网络层 IP,ICMP和IGMP,端到端传输
网络接口和物理层 以太网,令牌环网,FDDI,wifi,gps/2G/3G/4G,驱动(屏蔽硬件差异)

5.网络各层的协议解释

1.网络接口和物理层

 mac地址: 48位全球唯一,网络设备的身份标识

  •  ARP:地址解析协议,IP地址找到mac地址
  •  RARP:mac地址--找到P地址
  •  PPP协议: 拨号协议 (GPRS/3G/4G)

2.网络层

  •  IP地址
  •  IP协议: Internet protocol(分为IPV4和IPv6)
  •  ICMP:Internet控制管理协议,Ping 命令属于ICMP
  •  IGMP:Internet分组管理协议,广播和组播

3.传输层

TCP: (Transfer Control protocol,传输控制协议) 提供面向连接的,一对一的可靠传输的协议

  • 数据无误,数据不丢失,数据无失序
  • 适用场景
  • 适合对传输质量要求较高,以及传输大量数据的通信
  • 在需要可靠数据传输的场合,通常适用TCP协议
  •  MSN/QQ等即时通讯软件的用户登录账号管理相关的功能通常采用TCP协议

UDP: (user Datagram Protocol,用户数据报协议) : 提供不可靠,无连接的传输协议

  • 适用场景
  • 发送小尺寸数据 (如对DNS服务器进行IP地址查询时)
  • 在接收数据,给出应答较困难的网终中适用UDP (如无线网络)
  • 适合于广播/组播式通信中MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通常采用UDP协议流媒体VOD,VoIP,IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输         

SCTP: (Stream Control Transmission Protocol:流控制传输协议),TCP的增强版,他能实现多主机多链路的通信。       

 4.应用层            

网页访问协议: HTTP/HTTPS0
邮件发送接收协议: POP3(收)/SMTP(发),IMAP(可接受邮件的一部分)
FTP: 文件传输协议
Telnet/ssh:远程登录
嵌入式相关

  • NTP:网络时钟协议
  • SNMP:简单网络管理协议 (实现对网络涉及集中式管理)
  • RTP/RSTP:用于传输音视频的协议 (安防监控)         

6.网络的封包和拆包

Linux网络编程 网络基础知识,网络编程,Linux学习记录,网络,linux,服务器

TCP/IP协议下的数据包Linux网络编程 网络基础知识,网络编程,Linux学习记录,网络,linux,服务器

7.网络预备知识     

1.socket

  • 是一个编程接口,是一个特殊的文件描述符(对他执行IO的操作函数,比如read,write,close等),并不 仅限于TCP/IP协议,面向连接TCP,无连接UDP。   
  • socket代表网络编程的一种资源                                            

分类

  • 1.流式套接字(SOCK_STREAM)。唯一对应TCP 提供了一个面向连接,可靠的数据传输服务,数据无差错,无重复的发送顺序接收。内射击流量控 制,避免数据流淹没慢的接收方。数据被看作式字节流,无长度限制。
  • 2.数据包套接字(SOCK_DGRAM)。唯一对应UDP 提供无连接服务器,数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重 复,顺序发送,可能乱序接收。
  • 3.原始套接字(SOCK_RAW)。对应多个协议,发送穿透了传输层 可以对较低层次协议如IP,ICMP直接访问。

2.IP地址

  • IP地址是Internet中主机的标识,Internet中的主机要与别的机器通信必须具有一个IP地址,IP地址为32 为(Ipv4)或者128位(Ipv6),每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数 据包选择路由
  • 表示的形式:常用点分形式,如202.38.64.10,最后都会转化成一个32位的无符号整数
  • mobileIPV6:local IP(本地注册的IP),roma IP(漫游IP)

特殊IP地址

  • 局域网IP: 192.XXX.XXX.XXX 10.XXX.XXX.XXX
  • 广播IP:xxx.xxx.xxx.255 255.255.255.255(全网广播) 网络风暴
  • 组播IP:224.xxx.xxx.xxx ~239.xxx.xxx.xxx

3.端口号

  • 16位数字,1-65535
  • 为了区分一台主机接收到的数据包应该转交给哪个任务进程处理,使用端口号来区别
  • 预留端口,1-1023 (FTP:24,SSH:22,HTTP: 80,HTTPS :469)
  • 保留端口: 1024-5000 (不建议使用)
  • 可以使用的端口: 5000~65535
  • TCP端口号于UDP端口号独立
  • 网络里的通信是由 IP地址+端口号 来决定的

4.字节序

  • 字节序是指不同的CPU访问内存中的多字节数据时候,存在大小端的问题
  • 如果CPU访问的是字符串,则不存在大小端问题
  • 一般来说X86/ARM : 小端模式
  •  power/miop:arm作为路由时,大端模式
  • 网络传输的时候采用大端模式

字节转换函数

  • 把给定系统所采用的字节序称为主机字节序,为了避免不同类别主机之间在数据交换时由于对于字 节序的不同而导致的差错,引入了网络字节序。
  • 主机字节序到网络字节序
  • u_long htonl(u_long hostlong);
  • u_short htons(u_short short);
  • 网络字节序到主机字节序
  • u_long ntohl(u_long hostlong);
  • u_short ntohs(u_short short);

IP地址的转换

  • inet_aton()

        将strptr所指的字符串转换成32位的网络字节序二进制值

  • inet_addr()

        功能同上,返回转换后的地址 仅适用于IPV4,出错时返回-1。

        局限性:不能用于255.255.255.255的转换

  • inet_ntoa()

        将32位网络字节序二进制地址转换成点分十进制的字符串

  • inet_pton()

        int inet_pton(int af, const char* src ,void* dst)

        将IPV4/IPV6 的地址转换成binary格式

        使用于IPV4/IPV6 能正确处理255.255.255.255的转换问题

        参数:

        1.地址协议族(AF_INET或AF_INET6)

        2.src:是一个指针(填写分点形式的IP地址(主要指IPV4))

        dst:转换的结果给到dst

  • inet_ntop(int af,const void *src,char *dst,socklen_t size)

        把ipv4和ipv6的网络字节序变成本地的字符串形式的IP地址

        参数

        1.af:地址协议族(AF_INET或AF_INET6)

        2.src:是一个指针(32)

        3.dst:输出结果为32位点分形式的IP地址

        4.size:长度文章来源地址https://www.toymoban.com/news/detail-689466.html

到了这里,关于Linux网络编程 网络基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C/C++网络编程基础知识超详细讲解第三部分(系统性学习day13)

                                                        懒大王感谢大家的关注和三连支持~    目录 前言 一、并发服务器 1.进程并发服务器 实例代码如下:  2.线程并发服务器 实例代码如下:  二、域通信 域通信TCP实例代码如下:  三、广播与组播(UDP)  1.广播 实例代码

    2024年02月05日
    浏览(47)
  • 网络编程 tcp udp http编程流程 网络基础知识

    OSI分层:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 tcp/ip: 应用层 传输层 网络层 数据链路 ip地址:唯一标识一台主机 ipv4 32位 ipv6 128位 寻址 可以反映物理上的一个变化 MAC地址:48 固化在计算机中 ip地址又两部分构成:网络号+主机号 端口号:标识一个应用程序

    2024年02月13日
    浏览(74)
  • 网络基础知识&socket编程

    Linux 系统是依靠互联网平台迅速发展起来的,所以它具有强大的网络功能支持,也是Linux 系统的一大特点。互联网对人类社会产生了巨大影响,它几乎改变了人们生活的方方面面,可见互联网对人类社会的重要性! 本章我们便来学习一些网络基础知识,如果感兴趣的读者可以

    2024年02月10日
    浏览(45)
  • 一、网络编程之基础知识详解

    引言: 初学网络编程时会涉及到许多网络基础知识,这些知识点比较零碎,本文希望系统总结一次,以便在后续的学习和工作中能够快速查阅。 网络分层模型 OSI 七层模型 OSI 模型,也叫做七层模型, OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。 OSI 模型是

    2024年02月09日
    浏览(57)
  • 《Java SE》网络编程基础知识归纳。

    目录 一、网络基本介绍 1、什么是网络通信? 2、网络 3、IP地址 4、域名 5、网络通信协议 6、Socket 二、TCP网络通信编程  1、应用实例1(字节流) 2、应用实例2(字节流) 3、应用实例3(字符流) 4、netstat 指令 三、UDP网络通信编程  1、基本介绍 2、基本流程 3、应用实例  

    2024年01月20日
    浏览(53)
  • 由浅入深Netty基础知识NIO网络编程

    阻塞模式下,相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 SocketChannel.read 会在没有数据可读时让线程暂停 阻塞的表现其实就是线程暂停了,暂停期间不会占用 cpu,但线程相当于闲置 单线程下,阻塞方法之间相互影响,几乎不能正常工作,

    2024年02月05日
    浏览(55)
  • Python网络编程(一)——了解IP和端口的基础知识以及socket的简单实现

    Python网络编程(一)——了解IP和端口的基础知识以及socket的简单实现 IP(Internet Protocol) 地址是唯一标识互联网上连接至计算机或其他设备的地址。每一个设备在 IP 网络中拥有一个不同的 IP 地址,它由 32 位二进制数组成,通常表示为四个从 0 到 255 的十进制数之间用 (.)

    2024年02月04日
    浏览(64)
  • C++网络编程 TCP套接字基础知识,利用TCP套接字实现客户端-服务端通信

    流式套接字编程针对TCP协议通信,即是面向对象的通信,分为服务端和客户端两部分。 1)加载套接字库( 使用函数WSAStartup() ),创建套接字( 使用socket() ) 2)绑定套接字到一个IP地址和一个端口上( 使用函数bind() ) 3)将套接字设置为监听模式等待连接请求( 使用函数

    2024年02月03日
    浏览(60)
  • Linux高性能服务器编程 学习笔记 第五章 Linux网络编程基础API

    我们将从以下3方面讨论Linux网络API: 1.socket地址API。socket最开始的含义是一个IP地址和端口对(ip,port),它唯一表示了使用TCP通信的一端,本书称其为socket地址。 2.socket基础API。socket的主要API都定义在sys/socket.h头文件中,包括创建socket、命名socket、监听socket、接受连接、发

    2024年02月07日
    浏览(55)
  • Linux网络编程(一-网络相关知识点)

    目录    一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封  三、IP协议 3.1 MAC地址  3.2 IP地址 3.3 MAC地址与IP地址区别 互联网通信的本质是数字通信,任何数字通信都离不开通信协议的制定,通信设备只有按照约定

    2024年01月24日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包