• 新Socket与网络小结


    网络编程就是,写一个程序让两个计算机联网进行数据交互

    Socket套接字,实现计算机之间相互通信

    协议就是一种规范,使用某个协议就是遵守某种定义好的规范

    网络通信确认身份三要素,IP地址,MAC地址,端口号

    真正唯一标识一台计算机的是MAC地址

     

    一.

    TCP/IP协议下的Socket:          应用:http协议下的浏览器html页面

    面向连接的        
    数据在传输过程中不会消失

    数据是按顺序传输的

    数据发送和接收不是同步的

    二.

    UTD协议下的Socket:            应用:语音,视频等传输

    面向无连接

    传输的数据可能丢失或损毁

    重于快速传输而非顺序传输

    发送和接收是同步的

    限制传输数据大小

    三.

    OSI七层模型:                        TCP/IP模型

    应用层 应用程序 应用层 ----HTTP协议 FTP协议

    表示层 Socket     传输层 ----TCP协议  UDP协议

    会话层 路由器 网络层 ----IP协议,地址解析协议

    传输层 交换机      链路层

    网络层

    数据链路层

    物理层

    四.

    IP地址分为IPV4  IPV6 目前大部分还是IPV4

    由于IP地址资源比较珍贵,一个局域网可以拥有一个独立IP,做不到一台计算机一个。

    数据包中自带IP地址信息,把数据包发送给路由器后,路由器利用算法根据IP地址找到对方计算机,完成传输。

    五.

    MAC地址:媒体访问控制地址

    也称局域网地址,以太网地址,物理地址

    每个MAC地址都是独一无二的,在计算机出厂时就写在网卡上

    数据包中携带IP地址和MAC地址,发送到路由器/交换机后 可以找到对应的计算机,完成数据传递。

    六.

    Port端口号:计算机会给每个应用程序分配一个端口号

    数据包发送到计算机后,根据不同的端口号,发送到不同应用上。

    七.

    Socket缓冲区:每个Socket被创建会分配两个缓冲区,输入缓冲区和输出缓冲区

    要输出的数据会先存入输出缓冲区,再由TCP协议自行发送出去

    输入来的数据也会先存入输入缓冲区,再读取

    八.

    阻塞模式

    发送时候:

    1.write出数据之前会先查看缓冲区,当缓冲区剩余大小小于要发送数据会进入阻塞,等缓冲区数据发送出去 腾出足够空间,再write进缓冲区

    2.当缓冲区数据向网络发送时候 会进入阻塞,不能再写入直到缓冲区发送完毕。

    3.如果要写入的数据要大于缓冲区最大长度,则分批写入。

    读入时候:

    1. read如数据时候,如果缓冲区为空则进入阻塞直到有数据发送来
    2. 如果不能一次性把缓冲区数据读完,剩余数据会在缓冲区继续积压,等待下次read

     

     

    九.

    粘包问题:当发送端多次发送的数据包,被接收端当作一次的数据包接收,无法判断边界,只能当连续的数据流接收。

     

    十.

    建立连接三次握手:

    Seq为每次发送的数据包的用来标识的序号 Ack为另一端确认后再Seq基础上+1

    当每次 Ack = Seq + 1成立 说明对方已经确认了收到自己的数据包

    第一次握手。客户端发送请求给服务器  Seq=1000

    第二次握手。服务器接收到客户端请求后 发送确认准备给客户端 Seq=2000 Ack=1001

    第三次握手。客户端接收到后 发送确认准备给服务器 Ack=2001

     

     

     

     

    十一.

    断开连接四次挥手:

    第一次挥手。客户端向服务端发送断开连接请求,客户端进入wait1状态等待

    第二次挥手。服务端收到请求并向客户端发送 进行断开准备工作,客户端进入wait2等待

    第三次挥手。服务端准备好,并向客户端发送 可以断开了

    第四次挥手。客户端发送你可以断开连接了 然后进入TIMEWAIT。服务端接收到后断开连接

  • 相关阅读:
    [LeetCode] 137. Single Number II
    [LeetCode] 136. Single Number
    [LeetCode] 678. Valid Parenthesis String
    [LeetCode] 605. Can Place Flowers
    [LeetCode] 419. Battleships in a Board
    [LeetCode] 1002. Find Common Characters
    [LeetCode] 912. Sort an Array
    [LeetCode] 350. Intersection of Two Arrays II
    [LeetCode] 349. Intersection of Two Arrays
    [LeetCode] 820. Short Encoding of Words
  • 原文地址:https://www.cnblogs.com/ttaall/p/12546191.html
Copyright © 2020-2023  润新知