혼공 학습단/혼자 공부하는 네트워크

[혼공 학습단] 혼공 네트워크 6주차 과제

uomnf97 2024. 8. 18. 23:57
📌 6주차 과제
  • 진도 : Chapter 06~07
  • 기본미션 : Ch.06(06-2) 확인 문제 1번(p.379), (07-2) 확인 문제 2번(p.407) 풀고 설명하기
  • 선택미션 : 와이어샤크에서 실제 TCP/UDP 패킷 확인해 보기

 

1️⃣기본 숙제

  • Ch.06(06-2) 확인 문제 1번(p.379), (07-2) 확인 문제 2번(p.407) 풀고 설명하기
  • Ch.06(06-2) 확인 문제 1번(p.379) : 다음은 호스트 A와 B의 쓰리 웨이 핸드셰이크 과정에서 호스트 A가 호스트 B에게 전송한 첫 번째 SYN 세그먼트의 일부입니다. 쓰리 웨이 핸드셰이크 상에서 호스트 B가 호스트 A에게 전송할 다음 세그먼트의 Acknowledgment number(raw)는 무엇일까요?
    • 정답 : ④
    • 풀이 : 3588415413
      • 상황 : 문제에서 주어진 것과 같이 와이어샤크를 통해 프로토콜을 확인하고 있으며 첫 번째 패킷의 Transmission Control Protocol(TCP)의 항목을 열어 확인하는 과정입니다.
      • 첫 번째 포트에서 가장 위의 Source Port와 Destination Port를 통해 현재 송신지 포트가 49859이고, 수신지는 80이라는 것을 알 수 있습니다. 송신지의 포트는 동적 포트이고, 수신지는 HTTP연결에 사용되는 포트네요. 또한 하단 Flag를 통해 SYN 통신이라는 것도 확인할 수 있네요.
      • 현재 2 번째 빨간 네모 박스에서 순서 번호(Sequence Number)를 확인할 수 있습니다. 3588415412인데요. 따라서 이 순서 번호에 1을 더한 값이 다음 통신의 Acknowlegment number가 되기 때문에 답은 3588415413입니다.
  • (07-2) 확인 문제 2번(p.407) 풀고 설명하기 : 다음 그림은 두 호스트가 TLS 1.3 핸드셰이크를 수행하는 과정을 나타낸 그림 일부입니다. 괄호 안에 들어갈 TLS 관련 메시지로 알맞은 말을 골라보세요.
    • ① Application Data.
      ② ARP Request
      ③ ServerHello
      ④ Finished
    • 정답 : ③
    • 풀이 :
      • TLS(Transport Layer Security) 프로토콜은 SSL(Secure Sockets Layer) 프로토콜과 함께 HTTPS(HTTP Over TLS) 프로토콜에서 활용되는데요, TLS 1.3은 SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2 걸쳐 다음으로 나온 SSL을 계승한 프로토콜입니다.
      • HTTP 메시지의 안전한 송수신을 위해 개발되었는데요 아량허 겉아 총 세 단계로 이루어져있습니다.
      • ① TCP 쓰리 웨이 핸드셰이크
      • ② TLS 핸드셰이크
      • ③ 암호화된 메시지 송수신
      •  이번 문제에서는 TCP 핸드셰이크에 대해서 묻고 있고, 이제 본격적인 해설로 들어가겠습니다.
      • TLS 1.3 핸드셰이크 중 서버에게 처음으로 요청을 보내고 인증서를 받는 상황을 가정해서 설명해보겠습니다.
        1. 클라이언트 ClientHello 메시지 전달 : 암호화된 통신을 위해 서로 맞춰 봐야 할 정보 전달
          • TLS 버전, 사용 가능한 암호화 방식+해시 함수(암호 스위트), 키 생성을 위한 클라이언트 난수 등
        2. 서버 ServerHello 메시지 전달 : ClientHello로 제시된 정보들 중 선택하는 메시지로 ClientHello의 응답 메시지
          • TLS 버전, 사용 가능한 암호화 방식+해시 함수(암호 스위트), 키 생성을 위한 서버 난수 등
        3. 암호화된 통신을 위한 사전 협의 정보 결정
        4. 서버 Certificate 메시지와 CertificateVerify 메시지 전송
          • 인증서와 검증을 위한 디지털 서명 → 클라이언트 서버의 공개 키 검증
        5. Finished 메시지를 주고 받으며 TLS 핸드 셰이크 과정 종료
        6. 이렇게 설정을 마무리 한 뒤, 암호화된 메시지(Application Data)를 주고 받게됩니다.
      • 따라서 그림은 TLS 핸드셰이크 과정 중 TLS 키교환 과정에서 ClientHello 메시지의 다음 차례이자, Certificate을 주고 받는 단계 이전 차례에 해당되는 내용이 들어가야 합니다. 따라서 위의 설명을 참고해봤을 때 ServerHello가 들어가는 것이 적절합니다.

2️⃣ 선택 미션

  • 와이어샤크에서 실제 TCP/UDP 패킷 확인해 보기
    • 와이어 샤크를 받는 튜토리얼을 먼저 진행하겠습니다. 책 출간된지 얼마 안되었는데 그 새 버전이 업데이트 되고 페이지 UI도 바뀌었네요. 해당 사이트에 접근해봅시다. 인텔칩을 이용하고 계시면 Intel을 M1, 2 칩을 쓰시고 Arm을 받아주시면 됩니다.
    • 와이어샤크 프로그램은 Application에 옮겨두면 되고, ChmodBPF는 패킷 캡처를 위해 설치해줍니다.
    • 쭉 동의를 해주세요
    • LaunchPad를 띄우고 아래와 같은 아이콘이 생성되면 올바르게 설치되신 겁니다.
    • 클릭해서 열어주시면 이런 화면이 나오네요. 현재 WiFi로 인터넷을 접근하고 있어서 WiFi를 확인해보겠습니다.
    • 상단의 캡처를 중단하고, Protcol 테이블의TCP를 클릭해봤습니다. 좌측 하단에 Transmission Control Protocol의 패킷을 확인했습니다. 확인문제에서 풀어봤던 송수신 포트, 통신 플래그를 확인할 수 있네요. 지금은 ACK 통신 중이었네요. 그리고 우측 하단의 박스에서는 패킷에 해당되는 실제 데이터를 확인할 수 있다고 합니다. 물리계층에서 받아야 하는 데이터라 그런지 컴퓨터가 이해하고 있는 언어인 0,1로 이루어진 binary데이터임을 확인할 수 있습니다.
    • UDP패킷을 보도록 하죠. Protocol 테이클의 UDP를 클릭해봤습니다. 다른 형태로 되어 있네요. 여기서도 통신 포트를 확인해볼 수 있네요.

이렇게 모든 미션을 맞췄습니다. 이번 네트워크 통신을 공부하면서 기존에 몰랐던 부분을 알아가는 재미가 있었던 것 같습니다. 특히, 통신과정에서 정확한 통신을 통해, 많은 절차(프로토콜)을 통해 구축한다는 것을 알 수 있었습니다. 이런 부분을 알고 이번 사이드 프로젝트를 들여다보니 조금 더 수월하네요. 이번에는 7,8월 열감기를 한 번씩 걸리며 고생을 했었는데요. 여름이지만, 감기 코로나가 유행이니 조심하시고 다음에 봐요. 지금까지 포스팅을 확인해주셔서 감사합니다.

 

Reference :