Network - 2

IP Routing

  • 출발지(Host)에서 목적지(원하는 사이트의 ip)까지 어떤 홉(hop)들을 거쳐갈 것인지를 선택하는 것

  • 홉(hop)

    • 데이터 통신망에서 각 패킷이 라우터를 건너가는 모습
  • 가능성 있는 모든 경로들에 대한 정보 수집 후, 라우팅 테이블(Routing Table)에 기록함

    • 최적 경로, 시간, 거리, 비용 등 다양한 조건에 의한 최적 경로
  • 라우팅 테이블(Routing Table)

    • 최적의 경로를 저장해놓은 테이블

    • 라우팅 테이블이 없으면 데이터를 전송할 수 없다.

인터넷이 안된다면…

  • Router(ex iptime)가 안될 경우

  • NIC 즉, 랜카드가 안될 경우

  • OS 자체 내에서 TCP/IP 4계층 동작이 안될 경우

    • localhost(127.0.0.1)를 통해 loopback하여 OS 자체 내 문제 확인

    • packet을 날려서 잘돌아오는지 확인

    • NIC 하고는 상관없는 동작

전송 계층(Transport Layer)

TCP vs UDP

  1. TCP(Transmission Control Protocol)

    • 연결 지향형 프로토콜

    • 높은 신뢰성

    • 수신 호스트를 체크

    • 수신 호스트가 응답하지 않을 경우, 일정 시간 후 데이터를 재전송

    • 소켓쌍(ex (source IP, source port), (dst IP, dst port))으로 연결 식별

    • 커널 영역에 send buffer와 receive buffer로 동작 수행

    1. TCB(Transmission Control Block)

      • TCP 연결 처리에 필요한 정보가 있다.

      • connection state(LISTEN, ESTABLISHED, TIME_WAIT 등)

      • receive window

      • congestion window

      • sequence 번호

      • 재전송 타이머 등

    2. 3-Way Handshaking

      • 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장한다.

        1
        client <------------> server
      1. client가 처음으로 SYN(Synchronize)를 보낸다.

        • sequence number는 ISN(Initial Sequence Number)

        • 보낸 후, 응답을 기다리는 SYN_SENT 상태가 된다.

      2. server는 client에게 요청을 수락한다는 ACK(Acknowledgment)와 SYN를 발송한다.

        • ACK는 SYN에 +1을 한 것

        • client가 다시 응답하기는 기다리는 SYN_RECEIVED 상태가 된다.

      3. client는 다시 server에게 ACK를 보내고 이후부터는 연결이 이루어진다.

        • client와 server 모두 ESTABLISHED 상태가 된다.
    3. 4-Way Handshaking

      • 연결을 종료하기 위해 수행되는 절차

        1
        client <------------> server
      1. client가 연결을 종료하겠다는 FIN(Finish)을 보낸다.

        • 이 때 client는 더 이상 send를 할 수 없고, received만 하는 상태가 된다.

        • client는 FIN-WAIT1 상태가 된다.

      2. server는 ACK를 보내고 application이 끝날 때까지 기다린다.

        • server는 CLOSE_WAIT 상태가 된다.(TIME_WAIT)

        • client는 server의 FIN을 기다리는 FIN-WAIT2 상태가 된다.

      3. application이 끝나면 server는 FIN을 client로 보낸다.

        • server는 client의 ACK를 기다리며 LAST_ACK 상태가 된다.
      4. client는 ACK를 보낸 뒤에 TIME_WAIT 상태가 된다.

        • 이 때 보낸 client는 server로부터 받지 못한 데이터가 있을 수 있다.

        • 그럴 경우를 대비해 MSL(Maximum Segment Lifetime)의 두 배의 시간을 기다린다.(defalut : 240s)

        • 그리고 CLOSE

        1
        2
        3
        4
        5
        6
        7
        - SYN(Synchronization) : 동기화. 연결 요청 플래그

        - ACK(Acknowledgement) : 응답

        - FIN(Finish) : 연결 종료 요청

        - MSL(Maximum Segment Lifetime) : 최대 세그먼트 수명, 주로 2분.
  2. UDP(User Datagram Protocol)

    • 낮은 신뢰성

    • packet을 보내고 받았는지 체크를 하지 않음

    • 스트리밍 서비스에 이용

Share