网络编程(计算机网络的概念,ip地址,端口,协议,TCP和UDP,三次握手)

概念

计算机网络:把分布在不同区域的计算机与专门的外部设备用通信线路相互之间连接起来,组成一个功能强大,规模比较大的网络系统,使得计算机之间可以进行消息的传递,数据的共享。

网络编程:指的是在同一个网络中不同的计算机之间的通信

计算机之间通信需要的条件 (ip地址,端口,协议)

  • IP地址:

    概念:指的是互联网协议地址【Internet Protocol Address】

    作用:是联网设备和互联网之间的唯一标识,在同一个网段中,ip地址是唯一的

    组成:ip地址是数字型的,是一个32位整数,为了便于记忆,将32位整数分为4个8位二进制,每8位用圆点隔开,将每个8位的二进制转换为0~255之间的十进制,通常见到的ip地址的形式:192.169.xx.xx

    分类:1.按形式分:ipv4【ip地址由4个字节组成,分为4段】和ipv6【ip地址由6个字节组成,分为6段】;2.按功能分:A类【保留给政府机构,1.0.0.1~126.255.255.254】,B类【分配给中型企业,128~191】,C类【分配给任何需要的个人,192~223】和D类【用于组播,224~239【组播是一种数据的传输方式】】

    总结:127.0.0.1:回送地址,一般指的是本机的ip,可以使用localhost表示,一般用于测试。ip地址可以唯一的确定网络上的一个通信实体,但是一个通信实体可以有多个通信程序可以同时提供网络服务,还需要端口

  • 端口:

    概念:数据的发送和接收都需要通过端口进出计算机,端口号用于唯一标记通信实体上进行网络通信的程序。同一台机器上不能两个程序同时占用同一个端口,端口号的取值范围:0~65535

    分类:公认端口【0~1023 ,一些特殊的应用】,注册端口【1025~49151】和动态端口或者私有端口【1024~65535】

    常用端口:mysql:3306;oracle:1521;tomcat:8080;qq:4000

  • 网络协议

    规定一套全球通用的协议,连接网络的网络协议,有TCP,UDP,HTTP/HTTPS

  • TCP/IP协议:

    是互联网那个协议的简称。通信的时候,双方必须知道对方的标记,互联网上每个计算机的唯一标识就是ip地址,如果一台计算机同时接入到两个或者更多的网络,比如路由器,他就会有 两个或者多个ip地址,所以,ip地址对应的实际上是计算机的网络接口,通常是网卡。特点:不安全,数据按块发送,途径多个路由,但不保证数据能够顺利到达,或者不保证对方接受到的数据是完整的

TCP

  • Socket:套接字,应用程序通常需要通过套接字向网络发出请求或者应答网络请求,使得主机或者一台计算机的进程间可以通信。Socket是网络编程中的一个抽象概念,通常使用Socket表示打开了一个网络连接,打开一个Socket需要知道目标计算机的ip地址,端口号,指定协议。
  • TCP:Transmission  Control  Protocol ,传输控制协议,基于字节流的传输层通信协议。

        特点:
        a.安全的【确保接收方完全正确的接收到消息】
        b.面向连接的【面向连接的协议,发送消息之前,需要建立连接,所以TCP需要耗费时间】
        c.数据传输的效率比较低
        d.一旦双方建立连接,可以按照统一的格式传输数据,数据的大小是没有限制的

  • 经典的三次握手建立连接

       a.客户端向服务端发起请求:第一次握手
       b.服务端收到请求之后,回客户端一个响应:第二次握手
       c.客户端收到服务端的响应之后,回给服务端一个确认信息:第三次握手

注意:使用tcp来实现数据的传输需要有发送方【主动发起请求的叫做客户端】和接收方【被动接受请求的叫做服务端】,但是两个通信实体之间并没有严格的客户端和服务端之分,在两个通信实体进行通信之前,必须有一个通信实体做出主动姿态,主动发起连接请求

UDP

  • UDP:User Datagram Protocol,用户数据包协议,提供面向事务的简单不可靠的信息传送 
  • 特点:
    a.不安全的【发送方所发送的数据包并不一定以相同的次序到达接收方,或者接收方不一定能够接收到】,比如:飞秋
    b.无连接的【每个数据包【报】中给出了完整的地址信息,因此无需建立发送方和接收方之间的连接】
    c.效率高,速度快
    d.传输的数据有大小限制,每个被传输的数据包必须限定在64k以内

总结

  1. 对于客户端,要主动连接服务端的ip地址和端口号,对于服务端,首先要监听指定端口,然后,对每一个新的连接,创建一个线程或者一个进程来处理,通常,服务端会无限的运行下去
  2. 同一个端口,被一个socket绑定之后,就不能绑定其他的socket了
  3. tcp连接创建的是双向通道,双方都可以给对方发送消息,也可以接受对方的消息
  4. HTTP/HTTPS:被动协议,只有客户端做出一个主动姿态,主动发起请求,服务端才会做出一个响应 
  5. TCP与UDP之间的区别:
    > a.连接方面区别:TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
    > b.安全方面的区别:TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
    > c.传输效率的区别:TCP传输效率相对较低;UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信
    > d.连接对象数量的区别:TCP连接只能是点到点,一对一的;UDP支持一对一,一对多,多对一和多对多的交互通信
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值