• unix网络编程 初步了解TCP/IP协议


    1.网址(URL,uniform resource locator统一资源定位符)

    URL的元素:http:(开头表示数据源的机制,也就是协议)+//(后面的字符串表示服务器的名称)+web服务器名+“/(目录名)+/(文件名)”(表示数据源的路径名)

    例子:http://www.lab.glasscom.com/dirl1/file1.html

    URL的文件名可以省略,大多数情况下都是index.html或者default.htm

    2.文件传送协议(FTP,file transfer protocol)

    FTP一种在上传、下载FTP文件时使用的协议。

    3.DNS(domain  name system,域名服务系统)

    1. 功能:将ip地址和服务器名称相关联。
    2. 组成:是由域名解析器和域名服务器组成。

    关于域名服务器:域名服务器保存该网的域名以及对应的ip地址,而且还具备把域名转换为ip地址的功能。

    (每个域名都有对应的ip地址,但是ip地址不一定都有域名。)

    域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器

    • DNS是怎么工作的? 将信息分布保存在多台DNS服务器中,这些DNS服务器相互配合,从而查找到查询的信息。
    • 如何在DNS服务器上注册并保存? DNS服务器中的所有信息都按照域名以分层次的结构来保存

    4.域名

    通常域名都是以句点(.)分隔的名称。

    域名中每一额句点代表了不同层次之间的界限。

    在域名中,越靠右的位置表示其层级越高。例如www.baidu.com。这个域名中,com域的下一层是baidu域,再下一层是www域。

    5.服务器 

    服务器的构成包括处理器硬盘内存系统总线等,和通用的计算机架构类似

    但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

    在网络环境下,根据服务器提供的服务类型不同,分为文件服务器数据库服务器,应用程序服务器,WEB服务器等。

    根据服务器档次(网络规模、服务器的综合性能)划分,分为入门级服务器、工作组级服务器、部门级服务器、企业级服务器、视频服务器。

    服务器的操作系统:WINDOWS,NetWare,Unix,Linux

    6."/"根目录

    根目录是目录层次中最顶层的“根目录”。其实“/”本身没有名字,我们仅用“/”来表示而已。

    7.HTTP的基本思路

    • 首先,客户端会向服务器发送请求消息,包括“对什么(URL)”和“进行怎样的处理(方法)”
    • 其次,服务器根据客户的要求进行工作,完成之后的结果放在响应消息里。
    • 最后,响应消息发回客户端,客户端收到消息之后,浏览器读取所需要的内容显示出来。

    8.IP地址的基本知识

    由一些小的子网通过路由器连接起来组成一个大的网络(超网)。

    我们现实中通常用的路由器包括集线器和路由器两部分。

    1. 什么是子网?子网可以理解为用集线器连接起来的几台计算机,看成一个单位,一个子网。
    2. 什么是网络?将子网用路由器连接起来成为一个网络。
    3. 什么是路由器?一种对包进行转发的设备(其中的包指的是数据,因为数据是以包的形式传送的)
    4. 什么是集线器?一种对包进行转发的设备,分为中继式集线器和交换式集线器两种。
    5. 什么是IP地址?IP地址可以看做是“……号……室”。“号”对应网络号,“室”对应主机号这个地址的整体称为IP地址

    具体的IP地址有32个bit,8个bit(一个字节byte)为一组分为4组。

    网络号和主机号连起来总共是32bit,但是这两部分不是固定的。

    9.子网掩码(子网掩码涉及很多内容)

    子网掩码的作用:将某个IP地址划分为网络地址主机地址两部分。(?)同时可以表明一台主机所在的子网与其他子网的关系。

    • A类地址的默认的子网掩码是255.0.0.0
    • B类地址的默认的子网掩码是255.255.0.0
    • C类地址的默认的子网掩码是255.255.255.0

    利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网

    子网掩码的设定规则:

    子网掩码的长度为32位,左边是网络位,用二进制“1”表示,1的数目等于网路位的长度;右边是主机位,用二进制“0”表示,0的数字等于主机位的长度。

    目的:为了让掩码与ip地址做按位与运算时用0遮住原主机数,而不改变网络段数字,而且很容易通过0的位数确定子网的主机数。(?)

    ?怎么判断不同的计算机处于同一子网中:

    找到该计算机的ip地址和子网掩码,把十进制转换为二进制后进行AND运算,然后再转换为十进制。如果结果一样,那么我们就可以认为这几个计算机在同一个子网里。

    10.委托协议栈发送信息

    收发数据的操作大致分为四个过程:

    1. 创建套接字(创建套接字阶段)
    2. 将管道连接到服务器终端的套接字(连接阶段)
    3. 收发数据(通信阶段)
    4. 断开管道并删除套接字(断开阶段)

    套接字的概念:建立管道的关键在于管道两端的数据入口,这些出入口成为套接字。

    • 描述符:应用程序用来识别套接字的机制          
    • IP地址和端口号:客户端和服务器之间用来识别对方套接字的机制

     11.创建套接字

    创建套接字的过程:应用程序调用socket申请创建套接字,协议栈根据应用程序的申请执行创建套接字的操作。

    在创建套接字时,首先分配一个套接字所需的内存空间,然后向其中写入初始状态。

    浏览器、邮件等一般应用程序收发数据时用TCP。

    DNS查询等收发较短的控制数据时用UDP。

    协议栈和套接字的关系:协议栈是根据套接字中记录的控制信息来工作的。

    12.网卡

    电脑网卡是工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口。不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。

    因网络上的数据率和计算机总线上的数据率不相同,所以网卡里还有对数据进行缓存的储存芯片。

    网卡的功能:进行串行/并行转换

    • 网卡和局域网之间的通信:通过电缆或双绞线以串行传输方式进行的
    • 网卡和计算机之间的通信:通过计算机主板上的I/O总线以并行传输方式进行。

     13.协议栈

    协议栈(Protocol Stack)是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。  协议栈在操作系统中。

    使用最广泛的是英特网协议栈,由上到下的协议分别是

    • 应用层(HTTP,FTP,TFTP,TELNET,DNS,EMAIL等)
    • 运输层(TCP,UDP),网络层(IP)
    • 链路层(WI-FI,以太网,令牌环,FDDI,MAC等)
    • 物理层

    协议栈和应用程序之间的具体交流过程:在接收数据的过程中,协议栈会检查收到的数据块和TCP头部的内容,如果没有数据丢失就返回ADK号。然后协议栈将数据块暂时存在接收缓冲区中,并将数据块按照顺序连接起来还原原来的数据,最后将数据交给应用程序。具体来说,协议栈是复制数据到应用程序指定的内存地址中,然后将控制流交回给应用程序。

    14.负责保存控制信息的头部

    头部的类型:TCP头部,以太网头部(MAC头部),IP头部

    头部的作用:记录和交换控制信息。 

    存放数据的数据包的构成:(从左到右顺序)以太网和IP的控制信息——TCP的控制信息——数据块

    只有控制信息的数据包的构成:(从左到右顺序)以太网和IP控制信息——TCP的控制信息

    通信操作中使用的控制信息分为两类:

    • 头部中的记录信息
    • 套接字(协议栈中的内存空间)中记录的信息

     15.连接阶段(将管道连接到服务器终端的套接字)

    连接操作的第一步是在TCP模块出处创建表示连接操作信息的头部。

    通过TCP头部中的发送方和接收方端口号就可以找到连接的套接字。

    在创建套接字之后,应用程序就会调用connect,随后协议栈会将本地的套接字与服务器的套接字进行连接。

    16.收发数据(通信阶段)

    数据收发操作是从应用程序调用write将要发送的数据交给协议栈开始的。

    协议栈接收数据后执行发送操作:

    1.协议栈只会关注应用程序发过来的数据长度。协议栈并不一定接收到数据之后就立刻发送,它先把数据存放到内部的缓冲区里,并等待应用程序的下一段数据。

    到底什么时候发送呢,协议栈还是有它判断的标准的:

    MTU:一个网络包的最大长度,以太网中一般为1500字节。

    MSS:除去头部之后,一个网络包所能容纳的TCP数据的最大长度。

    2.如果数据较大的话,发送缓存区中的数据会被以MSS长度为单位拆分,拆分出来的每块数据会被放进单独的网络包中。拆分之后,当判断需要发送这些数据时,就会在每一块数据前面加上TCP头部,并根据套接字中记录的控制信息标记发送方和接收方的端口号,然后交给IP模块来执行发送数据的操作。

    3,怎么确定网络包已经被接收了呢?使用ACK号确定网络包已接收

    通过“序号”和“ACK号”可以确认接收方是否接收到了网络包。(这是一个双向交互的机制) 

    17.接收HTTP响应消息

    浏览器对于web服务器返回响应消息,需要调用read程序来获取响应消息。控制流程会通过read转移到协议栈,然后协议栈会执行接下来的操作。

    18.从服务器断开到连接套接字

    当完成数据发送的一方会发起断开过程。

    (以下以服务器为例)

    • 服务器一方的应用程序会调用Socket库的close程序
    • 服务器的协议栈会生成包含断开信息的TCP头部
    • 协议栈会委托IP模块向客户端发送数据,同时服务器套接字会记录下断开操作的消息。

    (以下以客户端为例)

    • 收到服务器发来的TCP头部,客户端的协议栈会将自己的套接字纪委进入断开操作状态
    • 客户端会向服务器返回一个ACK号,来告知服务器已经收到TCP头。协议栈就会等待应用程序来取数据。
    • 应用程序会调用read来读取数据。
    • 客户端程序会调用close来结束数据收发操作,并且生成一个TCP包,然后委托IP发送给服务器
    • 之后服务器返回ACK号,最后结束

    但是最后套接字不会立刻删除。

    19.包的基本知识

    包的组成:包是由头部和数据两部分构成的。

    头部:包的开头包含目的地址等控制信息,称为头部

    数据:包装载的数据,也是包的内容

    20.节点的概念

    终端节点:把发送方和接收方统称为终端节点

    转发节点(中间节点):转发设备

    21.IP模块

    IP模块负责添加两个头部:1)MAC头部:以太网用头部,包含MAC地址

                                            2)IP头部:IP用的头部,包含IP地址

    无论要收发的包是控制包还是数据包,IP对各种类型的包的收发操作都是相同的。

  • 相关阅读:
    shell脚本编写实例
    正则表达式文本过滤
    bootstrap实现嵌套列
    当鼠标悬停在链接上,或者点击过的链接,颜色会被设置为 #2a6496。同时,会呈现一条下划线。点击过的链接,会呈现一个颜色码为 #333 的细的虚线轮廓。另一条规则是设置轮廓为 5 像素宽,且对于基于 webkit 浏览器有一个 -webkit-focus-ring-color 的浏览器扩展。轮廓偏移设置为 -2 像素
    bootstrap页面效果图
    bootstrap实现菜单定位
    bootstrap三列布局
    bootstrap图片切换效果
    bootstrap导航菜单
    首字下沉
  • 原文地址:https://www.cnblogs.com/181118ljh123/p/12002300.html
Copyright © 2020-2023  润新知