首页 > 系统服务 > 详细

linux学习——网络编程

时间:2021-05-10 15:32:09      阅读:45      评论:0      收藏:0      [点我收藏+]

文章目录:

1.网络基础

(1)宏观概括

    技术分享图片

    电脑主机通过网络适配器连接到网络,网络适配器+网络可抽象为与磁盘控制器+磁盘类似的i/o设备。网络传来的数据通过适配器,i/o总线等复制到内存,等待cpu的处理,同样可以将主机的数据发送到网络中。

     技术分享图片 技术分享图片

 

 

 

    实际工作中采用4层网络模型,自顶向下依次为网络接口层(对应OSI模型的物理层+链路层,适配器和物理链路),网际层(IP层),传输层(TCP/UDP),应用层。

    客户端主机给服务器主机发送一次信息的整个过程:

      1)客户端主机运行程序,遇到套接字接口陷入内核(套接字原理及接口见下文)。

      2)内核运行协议软件,将信息封装,加上IP分组头部和MAC帧头部(网络通信中只可见网络模型的下三层)。

      3)将封好的数据包从内存复制到网络适配器中,再通过网络适配器转发到网络中。

      4)路由器根据IP分组头部的ip地址,进行路由选择和分组转发,转发到对应网络中。 交换机/网桥根据帧首部mac地址,在同一局域网内进行数据转发。

      5)网络适配器接收到网络上发来的数据,产生硬件中断,根据中断号执行相应的操作即运行协议软件对数据进行解包,根据端口号将数据发送到相应的进程。

 

   

(2)协议

    1).ARP协议  

    用途:已知IP地址获取mac地址,用于之后携带信息的报文在局域网内进行转发。

    工作原理:

        网络适配器欲将信息发送到网络中:

        ①先检查ARP高速缓存中是否有ip所对应的mac地址信息,若无在局域网内广播arp请求报文。 

        ②路由器接收该帧,若发现发送IP地址与目标IP地址在一个网络内则丢弃,否则将自己的mac地址放入ARP回答报文中回传给请求者。

        ③局域网内其他主机适配器收到帧,验证目标IP地址,若为发送给自己的帧则收下,发送ARP回答报文,否则丢弃。

    报文格式:

        技术分享图片

 

        ARP请求报文:以太网目标地址为FF-FF-FF-FF-FF-FF(用于广播),目标硬件地址为00-00-00-00-00-00,其他项依次正常填入。

        ARP回答报文:根据请求报文中的地址信息,以单播的方式将硬件地址信息传给请求者。

     wireshark协议分析:

      技术分享图片

 

     2)IP协议

     用途:用于异构网络互联。

     报文格式:

    技术分享图片

     wireshark协议分析:

    ipv4

    技术分享图片

    1.协议类型:ipv4——4

    2.首部长度:以4字节为单位。

    3.服务类型

    4.IP报文总长度:以1字节单位。

    5.标识:用于分片拼装

    6.标志(前三位):第一位为 0,未使用。 

             第二位DF:1为不许分片,0为允许分片

              第三位MF:DF为0时才有意义,MF=1时表示该序号之后还有分片,MF=0表示此片为最后一个分片。

      片偏移(后十三位):表示分片序号,以8字节为单位。

    7.生存时间:每通过一个路由器减一,减为零则丢弃。

    8.ip报文所承载报文类型:tcp——6 udp——17 icmp——

    9.头部校验和:只校验首部。

    10.源IP地址

    11.目的ip地址

 

 

    ipv6

     技术分享图片

 

  3)TCP协议

    用途:实现复用分用,流量控制,确认,拥塞控制等。

    工作原理:

    1.tcp三次握手建立连接:

      技术分享图片

      为什么必须是三次握手:

       如果是两次握手,考虑这样一种情况:主机1向主机2第一次发建立连接请求,由于链路较差,主机1未在定时器时间内未收到确认再次发起新的建立连接请求,主机2收到了新的请求,并回复确认成功建立了链接1。此时第一次也到达了主机2,主机2也会发送确认信号,又建立了一条连接2。主机1会通过连接1发送数据,发送后断开该链接,而连接2会一直存在,造成资源的浪费。

    2.tcp四次挥手断开连接:

    技术分享图片

    报文格式

      技术分享图片

 

    wireshark协议解析:

     技术分享图片

 

     与arp,ip类似与报文格式一一对应即可。

    ①端口号用于复用和分用

      常用端口号为0~1023

应用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP  
熟知端口号 21 23 25 53 69 80 161  

    ② 序列号与确认号用于确认机制,确认机制和超时重传,保证可靠传输。

    ③ 窗口大小用于流量控制。

 4)UDP协议

    用途:实现分用复用,数据差错校验(不可靠传输,延时小)。

    报文格式:

    技术分享图片

    wireshark协议分析:

    技术分享图片

2.编程接口

 

linux学习——网络编程

原文:https://www.cnblogs.com/smll/p/12251275.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!