网络编程基础概述--TCP/IP

一:TCP/IP 协议族(TCP/IP 协议栈)

    互联网协议族(Internet Protocol Suite,缩写IPS)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(TCP/IP Protocol Suite),简称TCP/IP,因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议)。

    TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。

二:互联网分层与各层主要功能

    互联网分层方式主要有以下三种:


    这里主要分析互联网五层结构:


    1,物理层

    就是把电脑连接起来的物理手段,可以用光缆、电缆、双绞线、无线电波等方式。主要规定了网络的一些电气特性,作用是负责传送0和1的电信号

    2,数据链路层

    单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?

    本层的主要功能就是确定 0与1 的分组方式。

    2.1 以太网协议--一种确定0与1分组的标准

    MAC地址:相当于网卡编号;每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。

    以太网规定,一组电信号构成一个数据包,叫做”帧”(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)(具体格式见上图)。

    2.2 广播:以太网发送数据包的方式

    向本子网络内所有计算机发送数据包,让每台计算机自己判断(对比MAC地址或IP地址),是否为接收方,是则接收该数据包,不是则丢弃。

    2.3 ARP协议:能从IP地址得到对方MAC地址的实现方式

    在一个子网络内,以IP地址与MAC地址(FF:FF:FF:FF:FF:FF 称为广播地址)进行广播,IP地址匹配的那台机器接收数据,然后回复本机的MAC地址。


    3,网络层

    3.1 为啥要有网络层

    以太网依靠MAC地址采用广播方式发送数据包,所有成员人手一"包",不仅效率低,而且局限在发送者所在的子网络。如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有数据包,那会引起灾难。

    所以就有了网络层:它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址”,简称”网址 ”。

    3.2 IP协议:规定网络地址(IP地址)的协议

    IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络

    目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255

    IP地址:分成两个部分,前一部分代表网络,后一部分代表主机(可从子网掩码中判断出哪部分是网络,哪部分是主机)

    3.3 如何确定两主机是否在同一个子网络

    子网掩码:subnet mask  表示子网络特征的一个参数;它在形式上等同于IP地址,也是一个32位二进制数字,它表示网络部分全部为1,主机部分全部为0

    将两个IP地址与子网掩码分别进行AND运算,若结果相同,就表明它们在同一个子网络中

    简单的说就是:根据子网掩码判断出两IP的网络部分(对应子网掩码二进制格式为1部分),再对比两IP的网络部分,一样则表示这两主机在同一个子网络内,不同则表示不在同一个子网络内。


    4,传输层

    同一台主机上有许多程序都需要用到网络,当一个数据包从互联网上发来的时候,如何确定这个数据包该给哪个程序使用?传输层主要就是用来解决这个问题的,传输层的功能,就是建立"端口到端口"的通信。

    4.1 端口 port

    这里指的是虚拟端口,TCP/IP协议规定的使用网卡的一种虚拟接口,这种接口有多个,它们的编号称为端口号

    端口号是0-65535之间的一个整数;0-1023的端口被系统占用,用户的应用程序会被系统随机分配一个大于1023的端口

    一个应用程序要使用网络需通过网卡接收和发送数据,系统会自动为该应用程序分配一个能使用网卡的虚拟接口,表现形式就是系统为该应用程序随机分配一个端口号。有了端口号,计算机就能确定从互联网接收到的数据包该给谁使用了。

    4.2 UDP协议:User Datagram Protocol  用户数据报协议

    UDP是一种无连接的,不可靠的,面向报文的传输层通信协议
    无连接:传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上
    不可靠:不提供数据传送的保证机制,在网络质量很差的环境下,UDP协议数据包丢失会比较严重

    面向报文:对应用程序交下来的报文,在添加首部后就向下交付给IP层;既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

    标头(首部)格式:固定8字节,分为四部分,各部分均为2字节;源端口号 目标端口号 数据报长度 校验和

    4.3 TCP协议:Transmission Control Protocol 传输控制协议

    TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议
    面向连接:在彼此交换数据包之前必须先建立一个TCP连接(这一过程与打电话很相似)
    可靠的:包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息,数据包丢失会重发

    基于字节流:TCP把应用程序交下来的报文看成一连串无结构的字节流,然后把数据流分割成适当长度的报文段,适当加工后添加首部向下交付给IP层。

    标头(首部)格式:20-60字节;源端口号 目标端口号 数据包中的第一个字节的序列号 确认序列号 校验和.....

UDP/TCP 优缺点对比
  优点  缺点  应用场景
UDP  占用系统资源少,传输速度快,效率高 不可靠传输  实时音视频聊天等
TCP  可靠传输  占用系统资源多,传输速度较慢  大部分情况;when in doubt, use TCP.

    5,应用层

    应用层的主要作用是规定应用程序的数据格式

    主要协议有以下几种:

    超文本传输协议(HTTP):用于实现WWW服务;规定了浏览器这类应用程序通信的数据格式
    文件传输协议(FTP):用于实现交互式文件传输功能;规定了文件传输形式的数据格式
    域名系统(DNS):用于实现网络设备名字到IP地址映射的网络服务。
    简单邮件传送协议(SMTP):用于实现电子邮箱传送功能
    远程登录协议(Telnet):用于实现远程登录功能。
    简单网络管理协议(SNMP):用于管理与监视网络设备

猜你喜欢

转载自blog.csdn.net/hua1011161696/article/details/80004607