Back
Featured image of post 네트워크 기초 정리 (3) - IP, MAC, IPv4, TCP, UDP, TCP 3,4-Way Hankshaking

네트워크 기초 정리 (3) - IP, MAC, IPv4, TCP, UDP, TCP 3,4-Way Hankshaking

이번 포스트에서는 네트워크 기초중의 기초인 IP/MAC,TCP/UDP의 대략적인 내용을 정리했습니다. 추가가 필요한 사항은 덧글 남겨주세요~

MAC Address/IP Address

MAC Address

개요

  • 2계층에서 사용하는 네트워크 인터페이스에 할당된 고유 식별 주소
  • OUI (24bit)와 UAA (24bit)로 이루어짐
    • OUI (Organizational Unique Identifier)
    • UAA (Universally Administered Address)

MAC 주소 변경
BIA상태로 NIC에 할당되어 있다. 일반적으로 ROM형태로 NIC에 고정시키는 것이기 때문에 주소 변경이 어려움 하지만 결국 메모리에 적재되어 구동되는 것이기 때문에 여러 가지 방법으로 이용해 변경된 MAC주소로 NIC를 동작시킬 수 있음

동작방식

  1. NIC는 자신의 MAC주소를 가지고 있고, 전기 신호가 들어오면 Data Link Layer에서 패킷으로 변환하여 목적지 MAC주소를 확인
  2. 만약 자신의 주소와 동일하지 않으면 패킷을 폐기
  3. 자신의 주소 or 브로드캐스트 or 멀티캐스트 그룹주소인 경우 패킷 정보를 상위 계층 (Network Layer) 으로 넘김

무차별 모드(Promiscuous Mode)
기본 NIC 동작 방식은 다른 목적지를 가진 패킷을 분석할 수 없음 하지만 다른 목적지를 가진 패킷을 분석하거나 수집해야 할 경우, Promiscuous Mode로 NIC를 구성 이는 자신의 MAC주소와 상관없는 패킷이 들어와도 분석할 수 있도록 메모리에 적재시키기 때문

IP Address

개요

  • 네트워크 통신에 있어 각각의 통신기기(컴퓨터,스마트폰 등)에 할당된 식별번호를 나타냄
  • IPv4, IPv6가 존재
    • IPv4 : 32bit 10진수 (8bit x 4byte)
    • IPv6 : 128bit
  • 4개의 옥텟(Octet)이라고 부르는 8bit 단위로 나누고 각 옥텟은 “.“으로 구분한
  • 네트워크 주소와 호스트 주소로 나뉨
    • 네트워크 주소: : 호스트들을 모은 네트워크를 지칭하는 주소. 네트워크 주소가 동일한 네트워크를 로켈 네트워크라고 함
    • 호스트 주소 : 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소

IPv4 : 주소체계(Class)

  • 사설 IP 영역 : 기업 내 인트라넷 등 내부망에 쓰기 위한 예약주소
    • A Class : 10.0.0.0 ~ 10.255.255.255
    • B Class : 172.16.0.0 ~ 172.31.255.255
    • C Class : 192.168.0.0 ~ 192.168.255.255
  • 사용 가능한 호스트 개수>: 2^n-2 (브로드케스트 주소 2개 제외)

서브 네트워크(Sub Network)

서브네팅(Subnetting)

  • 네트워크 세분화를 위한 IP 주소의 구성을 변경
    • IP 주소 체계는 [2단계 (네트워크 ID - 호스트 ID)] 에서
    • [다시 3단계(네트워크 - 서브네트 - 호스트] 로 네트워크 세분화 과정
  • 호스트 구분 ID에 할당된 비트들을 추가적으로 네트워크 구분 ID로 사용 가능

서브넷 마스크(Subnet Mask)

  • 서브 네트워크를 만들기 위해 AND 비트 연산에 의해 씌우는 마스크
  • IP Address에서 첫비트부터 어디까지가 네트워크 부분인가 알려주는 역할.
  • TCP/IP 에서 IP 주소 체계로 네트워크를 분할하는 논리적인 수단 (Mask는 차폐의 의미를 갖음)
  • IP Address처럼 32비트로 구성되며, 네트워크 부분을 표시하는 비트는 1, 호스트 부분은 0

TCP/UDP 프로토콜

TCP(Transmission Control Protocol)

  • 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
  • 신뢰성이 없는 인터넷을 통해 종단간에 신뢰성 있는 바이트 스트림을 전송하도록 특별히 설계
  • 연결형 서비스로 가상 회선 방식을 제공한다
  • 3-way handshaking과정을 통해 연결 설정, 4-way handshaking으로 해제. 흐름 제어 및 혼잡 제어
  • 높은 신뢰성을 보장
  • UDP보다 속도가 느리다
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식
    • 전이중이란 전송이 양방향으로 동시에 일어날 수 있음을 의미
    • 점대점이란 각 연결이 정확히 2개의 종단점을 가지고 있음을 의미
  • TCP는 멀티캐스팅이나 브로드캐스팅을 지원하지 않음

TCP 3, 4-WAY HANDSHAKING 로직

3-WAY HandShake - 연결 생성 (Connection establishment)

  1. 클라이언트가 서버에게 SYN 메시지를 보낸다. 이때 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다. 이 메시지에 포함된 시퀀스 번호는 클라이언트가 임의로 설정한 값 A(ACK Flag)

  2. 서버가 클라이언트에게 SYN-ACK 메시지 응답. 이 메시지에 포함된 시퀀스 번호는 서버가 임의로 설정한 값 S, A+1

  3. 클라이언트가 서버에게 ACK 메시지를 보낸다. 이 메시지에 포함된 응답 번호는 S+1, A+1

  4. 데이터 전송 (Data transfer) 발생한다. 클라이언트와 서버 모두 데이터와 확인응답을 보낼 수 있다. Client에서 발송시에는 P 플래그를 보내고, 서버는 수신 완료시에 A 플래그를 보낸다.

    A: Ack Flag / S:Syn Flag / P: PSH Flag

데이터는 순서에 맞지 않게 도착할 수 있고 또한 수신 TCP에서 일시적으로 보관할 수 있다. 그렇지만 TCP는 세그먼트가 순서에 맞지 않게 프로세스에 전달 되도록 하지 않는다.

4-WAY Shake - 연결 종료 (Connection termination)

  • 먼저 연결을 끊고자 하는 쪽을 Active Close라 하고 상대는 Passive Close라 한다.
  1. FIN_WAIT_1 (host A) : close()를 호출하면 ‘연결을 끊겠다’라는 신호를 보내기 위해 FIN flag를 1로 설정한 패킷을 상대에게 보내면서 FIN_WAIT_1 상태가 된다.
  2. CLOSE_WAIT (host B) : 상대에게 FIN flag가 1인 패킷을 받았다면 ‘연결을 종료하겠다는 것을 일단 알고있겠다.’ 라는 의미로 해당 패킷에 대한 응답 ACK을 보내고 CLOSE_WAIT 상태가 된다. 출력 버퍼에 있는 데이터를 모두 보낸 다음 서로간의 연결을 끊어야 하므로 ACK 만 보낸다.
  3. FIN_WAIT_2 (host A) : ACK을 받고 상대방이 FIN flag가 1인 패킷을 보낼 때까지 기다리는데 이를 FIN_WAIT_2 상태라고 한다.
  4. LAST_ACK (host B) : 상대에게 모든 데이터를 보냈다면 close()를 호출해 FIN flag가 1인 패킷을 보낸다.
  5. TIME_WAIT (host A) : 상대에게 FIN flag가 1인 패킷을 받았다면 서로가 연결을 끊을 준비가 된 것이므로 이에 대한 응답 ACK을 보낸다.
  6. CLOSED : ACK을 받으면 소켓을 닫아 연결을 종료한다.

UDP(User Datagram Protocol)

  • UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 비연결형 프로토콜
  • IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공
  • UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않음
  • UDP 사용하는 서비스: DNS, 실시간 멀티미디어 등

참고 및 출처

comments powered by Disqus