网络编程

一,硬件基础

  • 网卡提供了网络接口
  • 每个网卡上有全球唯一的mac地址。石油12位16进制表示,前六位是厂商编号,后六位是流水线号

二,ip与ip协议

    因为mac地址太麻烦所以需要ip地址进行辅助识别。  

  IP地址

      是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和             每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。  

  IP地址,

      是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式:

    用二进制表示范围为:0.0.0.0-11111111.11111111.11111111.11111111

    因为最大数八位二进制位255,所以用十位制表示范围为:0.0.0.0-255.255.255.255

      例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。arp字协议会帮助通过ip找到macd地址。

  ip协议的作用,

    1,为每一台机器分配ip地址:2,确定哪些地址在同一个子网路。

  本地的回环地址:

    127.0.0.1.

三,交换机  

  以太网:局域网与交换机

   服务器发送数据包(ip10.0.0.1)给交换机,该过程通过广播型传播,找到对应电脑的mac地址。

  交换机找到mac地址后通过单播的形式传给服务器4,一般一个交换机与所连电脑的形成的网络成为局域网。

    如果交换机连接电脑数量太多会容易造成拥堵,即广播风暴。

四,网关,局域网中的机器想要访问局域网外的机器需要通过网关访问,

 

 五,端口

  在计算机上,端口是设备与外界通讯交流的出口,每一个需要联网的程序都需要一个端口。不可能同一时间,同一台机器上有两个程序占用同一个端口。

  所有,ip+端口,找到唯一一台机器上唯一的程序。

  端口范围是0-65535,一般个人设置时会使用8000之后的。

六,tcp协议与udp协议

  当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。

  这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。

 

 

 

 

    建立连接,三次握手,

      客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
      服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
      客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
      三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

    终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。
      (1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
      (2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
          注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进      程在相应连接上再无额外数据可接收。
      (3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
      (4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
          既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。
    注意:
      (1) “通常”是指,某些情况下,步骤1的FIN随数据一起发送,另外,步骤2和步骤3发送的分节都出自执行被动关闭那一端,有可能被合并成一个分节。
      (2) 在步骤2与步骤3之间,从执行被动关闭一端到执行主动关闭一端流动数据是可能的,这称为“半关闭”(half-close)。
      (3) 当一个Unix进程无论自愿地(调用exit或从main函数返回)还是非自愿地(收到一个终止本进程的信号)终止时,所有打开的描述符都被关闭,这也导致仍然打开的任何TCP连接上也发出一个FIN。
    无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是,客户执行主动关闭,但是某些协议,例如,HTTP/1.0却由服务器执行主动关闭。tcp的四次挥手

 七,udp协议

  当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。

  当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。

  也就是说,可以直接发送,对方可以没有反馈

 对比,udp协议与tcp协议相比:

  • udp效率比较高,因为可以不用对方反馈,但是不安全。
  • tcp比较安全,提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

      tcp协议比较像打电话,而udp协议比较像写信。

八,互联网协议与osi模型

  互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

 

 九,socket

  Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。其实站在你的角度上看,socket就是一个模块。我们通过调用模块中已经实现的方法建立两个进程之间的连接和通信。也有人将socket说成ip+port,因为ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序。所以我们只要确立了ip和port就能找到一个应用程序,并且使用socket模块来与之通信。

  TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。

  UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。

我知道说这些你们也不懂,直接上图。

 

 

 

     

 

  

posted on 2023-12-13 19:23  我才是最帅的那个男人  阅读(172)  评论(0编辑  收藏  举报

导航