정보보안 (기술)/네트워크

네트워크 5. 네트워크 계층과 프로토콜(4) Port, 3-way handshake

rinaisme 2024. 7. 7. 15:50

1. 4 계층: 전송 계층(Transport Layer)

  • 네트워크 계층에서 패킷이 잘 도착했는지 확인
  • 네트워크 계층은 패킷이 어디로 가야 할지 알려주는 이정표일 뿐, 패킷이 손상되었거나 유실되지 않았는지 등의 문제는 신경 쓰지 않음
  • 지금까지 배운 1,2,3 계층을 통틀어서 해당 문제를 해결해 주는 계층은 없었음
  • 데이터가 제대로 도착했는지 확인
  • 데이터가 최종적으로 도착할 애플리케이션이 무엇인지 식별
  • 도착할 애플리케이션이 무엇인지 식별한다는 것은 네트워크 데이터를 어떤 애플리케이션에서 최종적으로 해석하고 사용할지를 의미
  • 여기서 데이터는 HTTP 요청일 수도 있고, FTP을 사용한 파일 다운로드 요청일 수도 있음
  • 목적에 따라 두 가지 통신 방법이 존재
    • 신뢰성/정확성: 데이터를 목적지에 문제없이 전달하는 방식 (연결형 통신)
    • 연결형 통신은 상대방과의 통신 과정을 여러 번 확인하고 보내는 방식
    • 효율성: 데이터를 빠르고 효율적이게 전달하는 방식 - UDP
    • UDP는 별도의 확인 절차가 없기 때문에 스트리밍 방식과 같은 동영상 서비스에 유리
  • TCP (Transmission Control Protocol)와 UDP (User Data Protocol)이 존재
  • TCP (Transmission Control Protocol)
    • 전송 제어 프로토콜
    • 전송 계층에서 신뢰할 수 있고 정확한 통신을 제공하는 연결형 통신 프로토콜
    • Segment 단위를 사용
    • 포트번호라는 주소로 통신
    • 이 포트번호는 최종적으로 어떤 애플리케이션으로 향하게 될지를 정해줌
  • Source Port
    • 송신자의 포트 번호
  • Destination Port
    • 목적지의 포트 번호
  • 2 계층은 프레임 단위였고, 3 계층은 패킷 또는 데이터그램 단위였다면, TCP는 Segment라고 불리는 단위 값을 사용
  • TCP는 이를 이용해 데이터가 손상되었거나 유실되었는지 확인
  • 손상이나 유실되었다면 재전송 제어를 하게 됨
  • Sequence Number
    • 송신 측에서 수신 측에 이 데이터가 몇 번째 데이터인지를 알려주는 역할
    • 해당 번호를 통해 수신 측은 원래 데이터의 몇 번째 데이터를 받았는지를 알 수 있음
  • Acknowledgement Number
    • 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할
    • 받은 데이터의 다음 번호의 데이터를 요청하는 데 사용
  • Offset
    • TCP 헤더의 크기를 나타내는 값
    • 데이터의 시작 위치
    • TCP 헤더의 크기가 TCP가 끝나는 지점이므로 데이터의 시작 위치라고 볼 수 있음
  • Reserved
    • 차후의 사용을 위해 예약된 필드
    • 항상 0으로 설정
  • TCP Flags
    • 세그먼트의 용도와 내용을 결정하는 플래그
    • 총 8bit로 이루어져 있으며, 각각의 비트가 연결의 제어 정보가 기록
    • TCP Connection (TCP Session)을 맺게 됨
    • TCP Connection: TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확인하고 데이터 전송
  • Window
    • 한번에 전송할 수 있는 데이터의 양
    • 65535만큼의 값을 표현 가능하며, Byte 단위 전송
    • 2의 16승
    • 65535 Byte = 64KB
  • Checksum
    • 오류를 검출하는 값
  • Urgent Pointer
    • 긴급 포인터
    • URG 플래그가 1이라면 수신 측은 이 포인터가 가리키고 있는 데이터를 우선 처리
  • TCP Options
    • 약 30개의 TCP options을 보유하고 있음
    • 대표적으로 Window 필드의 사이즈를 늘릴 수 있는 옵션이 존재

3. 3-Way Handshake

  • TCP 통신을 하기 전에 TCP Flags를 사용해 특별한 통신 과정을 거침
  • 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세 번 교환
  • TCP Flags를 이용해 패킷 교환
  • 1. SYN  요청
    • 통신을 하기 위해 통신 대상에게 연결을 요청
    • SYN Flags를 1로 설정한 후 전송
  • 2. SYN + ACK 응답
    • 이후 SYN 요청을 받은 대상은 SYN과 ACK Flag를 설정해 응답하여 연결을 허가
    • 다시 요청자는 ACK를 설정하여 알겠다는 의미의 응답을 해주게 되면서 TCP Session이 확립
    • 통신 대상은 요청 대상이 보낸 요청을 받고 허가 응답
    • SYN, ACK Flags를 설정한 후 전송
  • 3. ACK 응답
    • 서버의 응답을 받은 클라이언트는 알겠다는 응답
    • ACK Flag를 1로 설정한 후 전송하게 되면 TCP Session이 확립됨

4. 포트 번호(Port)

  • 3 계층에서는 IP주소, 2 계층에서는 MAC 주소를 사용했다고 한다면, 4 계층에서는 포트 번호를 사용해 목적지까지 갈 수 있음
  • 포트번호는 각 애플리케이션이 가지고 있는 번호로 애플리케이션을 구분하는 데 사용
  • 4 계층에서 목적지와 출발지를 나타낼 때 사용하는 번호
  • 각각의 포트 번호는 애플리케이션을 구분
  • Source Port와 Destination Port는 각각 2 bye로 0번부터 65535번까지 표현 가능
  • 잘 알려진 포트(Well-known port) 0~1023
    • 주요 프로토콜이 사용하도록 예약
    • 일반적으로 서버 측 애플리케이션에서 사용
  • 등록된 포트(Registered Port) 1024~49151
    • 1024: 예약되어 있지만 사용하지 않은 포트
    • 1025 이상: 랜덤 포트라고 하여 클라이언트 측 송신 포트로 사용
  • 동적 포트(Dynamic port) 49152~65525
    • 동적으로 사용되는 포트
  • SSH 22, SMTP 25, DNS 53, HTTP 80, HTTPS 443, POP3 110

5. UDP(User Datagram Protocol)

  • UDP는 User Datagram Protocol로 TCP와 다르게 데이터를 효율적이고 빠르게 보낼 때 사용
  • 데이터를 효율적으로 빠르게 보낼 때 사용 
  • 3-way Handshake의 과정이 존재하지 않음 (비연결형 통신이기 때문)
  • 신뢰성, 정확성 떨어짐 but 효율성 증가