zoukankan      html  css  js  c++  java
  • 给自己普及网络基本知识

    IP地址,32位,4个字节.采用十进制的格式表示,每一个字节用"."来分隔字节.

    协议:为进行网络中的数据交换(通信)而建立的规则,标准或者约定.不同的层有不同协议.

    OSI七层参考模型.(理论上)

    应用层:远程登录协议Telnet,文件传输协议FTP,超文本传输协议HTTP,域名服务DNS,简单邮件传输协议SMTP,邮局协议POP3等等.....

    传输层:传输控制协议TCP.(可靠)   用户数据报协议UDP.(非可靠,实时性较高.)

    网络层:网际协议 IP, Internet互联网控制报文协议ICMP,Internet组织管理协议 IGMP.

    一台计算机发送给另一台计算机的数据.首先会将该数据打包,打包的过程成为封装. 封装就是在数据前面加上特定的协议头部.   OSI参考模型中,对等层协议之间交换的信息单元成为协议数据单元.

    TCP/IP模型 4层 (实际应用中)

    端口:应用程序通过系统调用与某端口建立连接后,传输层传给该端口的数据都被相应的进程所接受,相应进程发给传输层的数据都通过该端口输出.

    套接字:套接字存在于通信区域中.通信区域也就是地址族(有点抽象).主要用于将通过套接字通信的进程的共有特性综合在一起. 套接字通常只与同一区域的套接字交换数据(可以跨区域通信,但这只在执行了某种转换进程后才能实现). Windows Sockets 只支持一个通信区域(网际域:AF_INET),这个域被使用网际协议簇通信的进程使用.

    网络字节顺序:为了保证数据的准确性,在网络协议中需要指定网络字节顺序.TCP/IP协议使用16位整数和32位整数的高位先存格式.

    流式套接字(SOCK_STREAM):提供面向连接,可靠的数据传输服务,无重复的发送,且按发送顺序接受. 基于TCP协议实现.

    数据报式套接字(SOCK_DGRAM):提供无连接服务.数据包以独立包形式发送,部提供无错保证,数据可能丢失或重复,并且接受顺序混乱.基于UDP协议实现.

    套接字修改属性函数. getsockopt().setsockopt() 

    基于TCP(面向连接)的SOCKET编程

    基于tcp的socket编程的服务端程序流程如下:

    1.创建套接字(sockt).........2.将套接字绑定到一个本地的端口(bind)........3.套接字设为监听,准备接受客户请求(listen)......4.当请求到来后,接受连接请求,返回一个新的对应于此连接的套接字(accept).......5.用返回的套接字和客户端进行通信(send/recv)......6.返回,等待另一个客户请求.......7.关闭套接字.

    基于tcp的socket编程的客户端程序流程如下:

    1.创建套接字(socket)........2.向服务器发出连接请求(connect)........3.和服务器端进行通信(send/recv).......4.关闭套接字.

    基于UDP(面向无连接)的SOCKET编程.服务端如下:

    1.创建套接字(socket).......2.讲套接字绑定到一个本地地址和端口上(bind).......3.等待接受数据(recvfrom)......4.关闭套接字.

    基于UDP(面向无连接)的SOCKET编程.客户端如下:

    1.创建套接字(socket)......2.向服务器发送数据(sendto).......3.关闭套接字.

  • 相关阅读:
    LINUX中常用操作命令
    NET Core Kestrel部署HTTPS
    Java中Enum枚举的使用
    Java多线程——sychronized
    Java中SynchronizedMap与ConcurrentHashMap的对比
    Java中HashMap实现原理
    数据结构——Java实现单向链表
    数据库——事务基础
    数据结构——Java实现二叉树
    Java中ThreadLocal的深入理解
  • 原文地址:https://www.cnblogs.com/lvpblog/p/2541742.html
Copyright © 2011-2022 走看看