[NETWORK PROGRAMMING] NETWORK #1

jckim22·2023년 10월 26일
post-thumbnail

네트워크란 ?

  • 실시간으로 데이터를 주고 받을 수 있는 장치들의 집합이다.
  • 여기서 장치는 컴퓨터일 수도 있고 아닐 수도 있다.(노드)
  • 노드 중에 가장 컴퓨터와 가까운 것은 호스트라고 한다.
  • 모드 네트워크 노드는 바이트 시퀀스인 고유한 주소를 갖고 있다.
  • 이 주소는 노드를 고유하게 식별할 수 있다.(IP address, ethernet address)

IPv4

  • IP는 32비트 -> 대력 40억개의 노드를 구별하게 할 수 있다.
  • 이미 노드는 40억개를 넘었다. (할당이 끝났다)
  • 하지만 여전히 IPv4를 사용하는 이유 -> IP주소를 공유하는 공유기(192.168.x.x)

DHCP

  • IP를 나에게 동적으로 할당해주는 프로토콜

IPv6

  • IPv4를 대체하기 위해 나온 v6의 IP
  • 128비트로 늘어남
  • 예시)
    2001:0DB8:0000:0000:0000:0000:1428:57ab
    2001:0DB8:0000:0000:0000::1428:57ab
    2001:0DB8:0:0:0:0:1428:57ab
    2001:0DB8:0::0:1428:57ab
    2001:0DB8::1428:57ab
    -> 기본적으로 할당되어 있음
    -> 아직 사용되지는 않음

물리적 주소(mac)

  • 48비트
  • 디폴트 주소

Big endian, Little endian

  • MSB를 메모리에서 가장 낮은 곳에 넣을지 높은 곳에 넣을지에 대한 구분 방식이다.
  • 네트워크에서 바이트는 Big endian 방식만을 사용한다.

패킷(Packet)

데이터 덩어리이다.

  • 현대 네트워크에서는 이 패킷을 교환하는 방식이다.

라우터

S A B D server
C E

  • 위와 같은 네트워크에서 A, B, 등의 노드는 라우터다.
  • 라우팅 알고리즘은 최단경로를 정해준다.
  • 라우팅 프로토콜에는 RIP, OSPF, BGP 등등이 있다.

packet switch 방식

이전엔 circuit switch 방식이 사용되었다.(전화)

  • packet이 되면서 음성 데이터를 코덱해서 이진수 형태의 패킷으로 잘라서 보낸다.

  • 하지만 패킷마다 다른 경로로 갈 수도 있고 유실될 수도 있고 도착시간이 다를 수도 있고 데이터에 비해 오버헤드 양이 너무 커지기도 했다.

  • 이걸 tcp가 정확하게 보내준다.

프로토콜

  • 프로토콜은 컴퓨터가 어떻게 컴퓨터를 정의하는지를 정의하는 정확한 규칙들의 집합이다.
  • communicate: 주소의 형식, 데이터가 패킷으로 분할되는 방법 등.
    ->하이퍼 텍스트 -> 클릭하면 텍스트가 바뀜

Network Layer

5: Application
4: Transport
3: Network or Internet
2: Data-Link
1: Physical

1,2계층

  • 1,2 계층은 통신방식(ethernet, wi-fi, LTE)
    2계층에서는 데이터가 서로 충돌이 안 나게 정하는 것이 핵심이다.

    이 때 전달되는 데이터를 frame이라고 한다.

3계층

  • IP
    라우팅을 해서 서버를 찾아가게 하는 것이 핵심이다.

4계층

  • TCP
    전달되는 패킷을 정확하고 규칙되게 전송될 수 있도록 한다.
    (패킷마다 번호를 붙여서 보냄)
    (시퀀스 넘버를 붙인다) -> 20 byte
    -> 신뢰성

  • UDP
    그냥 패킷만 던지고 끝이다.
    (시퀸스 넘버가 없다) -> 8 byte
    -> 신뢰성 x
    -> 하지만 빠르다.
    -> 데이터가 유실되어도 괜찮은 것에 사용된다.(전화)
    -> 요즘에는 5계층에서 신뢰성을 높이고 UDP를 사용한다.

와이어 샤크에서 확인 해보면 wi-fi도 이더넷 형식으로 되어 있다.

  • 라우터 -> 라우터 -> 라우터 일 때는 3계층 확인하고 다시 보내는 과정이 반복된다.

  • 그래서 4계층 프로토콜은 end-to-end(종단간 프로토콜이라고 한다.
    왜냐하면 라우터가 중간에 4계층 프로토콜을 볼 일이 없기 때문이다.

  • tcp에서 시퀀스 넘버는 1,2,3 형식으로 붙는 것이 아니라 바이트 형식으로 올라간다.
    #1 100byte #101
    위 같이 붙는다.

  • 시퀀스 넘버의 초기값을 정확하게 맞춰주기 위해 3-way handshake를 사용한다.

  • Port
    tcp에는 port 번호가 있다.
    4계층과 5계층 사이
    Application을 구별하기 위한 주소
    tcp로 받은 패킷은 많은데 이 패킷이 어떤 Application으로 가야하는지를 정해야한다.

profile
개발/보안

0개의 댓글