혼공네트] 6주차 - 과제 : Ch6 - Ch7. 네트워크 실습 및 심화 과정
혼공학습단 13기
필수과제
혼자 공부하는 네트워크 p.379
Q1. 다음은 호스트 A와 B 간의 쓰리 웨이 핸드셰이크 과정에서 호스트 A가 호스트 B에게 전송한 첫 번째 SYN 세그먼트의 일부입니다. 쓰리 웨이 핸드셰이크상에서 호스트 B가 호스트 A에게 전송할 다음 세그먼트의 Acknowledgment number(raw)는 무엇일까요?
A.
3588415413
위 보기는 와이어샤크를 통해서 확인한 네트워크 TCP 연결 수립 과정이다.
보기에서 Flags : 0x002 (SYN) 인 것을 보면
3-way-handshake 과정 중 첫 번째 과정인 SYN 세그먼트(연결 요청) 패킷이다.
송수신 방향 | 세그먼트 | 세그먼트에 포함된 주요 정보 | 비유 메시지 |
A → B | SYN 세그먼트 | - 호스트 A의 초기 순서 번호 - 1로 설정된 SYN 비트 |
연결 요청 |
B → A | SYN + ACK 세그먼트 | - 호스트 B의 초기 순서 번호 - 호스트 A가 전송한 세그먼트에 대한 확인 응답 번호 - 1로 설정된 SYN 비트 - 1로 설정된 ACK 비트 |
요청 수락 및 시작 |
A → B | ACK 세그먼트 | - 호스트 A의 다음 순서 번호 - 호스트 B가 전송한 세그먼트에 대한 확인 응답 번호 - 1로 설정된 ACK 비트 |
연결 성립 |
- Sequence Number(relative sequence number) : 실제 순서 번호는 한눈에 파악하기 어렵기 때문에 와이어샤크에서 제공하는 상대적인 순서 번호.
- Sequence Number(raw) : 실제 순서 번호. 실제 초기 순서 번호는 임의의 수로 설정된다. 데이터 순서를 유지하고, 재전송/손실을 관리하는 데 사용됨.
- Acknowledgment number : 가독성을 위해 와이어샤크에서 제공하는 상대적인 확인 응답 번호
- Acknowledgment number(raw) : 실제 확인 응답 번호. 송신 측에게 어떤 데이터가 정상 수신됐는지 알리는 역할.
문제에서는 다음 과정인 SYN + ACK 세그먼트(요청 수락 및 시작)에서의 Acknowledgment number(raw) 를 물어보았는데,
SYN + ACK 세그먼트 패킷에서는 SYN 세그먼트의 패킷을 정상적으로 수신받았으면, 이전 패킷의 순서 번호 Sequence Number(raw) : 3588415412에 1을 더한 3588415413을 확인 응답 번호로 전송한다.
혼자 공부하는 네트워크 p.407
Q2. 다음 그림은 두 호스트가 TLS 1.3 핸드셰이크를 수행하는 과정을 나타낸 그림 일부입니다. 괄호 안에 들어갈 TLS 관련 메시지로 알맞은 말을 골라 보세요.
① Application Data
② ARP Request
③ ServerHello
④ Finished
A. ③
문제에서는 TLS handshake에 대한 과정을 요구하고 있다. TLS handshake의 첫 번째 과정인 ClientHello 메시지가 서버로 전송되면 서버에서는 ServerHello 메시지를 클라이언트로 전송한다. 이 과정을 통해 암호화 키를 만들어 클라이언트와 서버 간에 암호화된 메시지를 송수신할 수 있게 된다.
TLS (Transport Layer Security)
SSL(Secure Sockets Layer)과 같이 인증과 암호화를 수행하는 프로토콜
- HTTPS(HTTP over TLS) : HTTP 메시지의 안전한 송수신을 위해 개발된 SSL/TLS를 사용하는 대표적인 프로토콜.
- HTTPS 메시지 송수신 과정
- TCP 3-way-handshake
- TLS handshake : 암호화 통신을 위한 키 교환 / 인증서 송수신과 검증이 이루어지는 단계
- 암호화된 메시지 송수신
- TLS handshake
- ClientHello : 클라이언트 메시지
- 암호화된 통신을 위해 서로 맞춰 봐야 할 정보들을 제시하는 메시지
- 지원 TLS 버전, 암호 스위트(cipher suite; 사용 가능한 암호화 알고리즘과 해시 함수), 키 생성에 필요한 난수 등이 포함
- ServerHello : 서버 메시지
- 제시된 정보들을 선택하는 메시지
- 선택된 TLS 버전, 암호 스위트, 키 생성에 필요한 난수 등이 포함
- 1,2번 과정을 거치고 나면 암호화 통신을 위해 사전 협의해야 할 정보들이 결정됨.
- 암호화에 사용할 키 생성
- 인증서 및 인증서 검증
- 서버는 Certificate(인증서) 메시지와 CertificateVerify(인증서 검증을 위한 디지털 서명) 메시지 전송
- 클라이언트는 이 메시지를 토대로 서버의 공개 키 검증
- 암호화 통신 수행 (마무리)
- 서버와 클라이언트는 TLS 핸드셰이크의 마지막을 의미하는 Finished 메시지를 주고 받음
- 주고받은 키를 바탕으로 암호화 데이터(Application Data)를 주고받음
- ClientHello : 클라이언트 메시지
① Application Data는 TLS handshake를 통해 암호화된 데이터를 주고받는 것을 나타내고,
④ Finished는 TLS handshake의 마지막을 의미하는 메시지를 나타낸다. Finished 메시지는 Application Data와 함께 전송이 가능하다.(TLS 1.3)
② ARP Request는 Addresss Resolution Protocol 동작 과정 중 첫 번째 과정인 ARP 요청을 말한다.
ARP (Address Resolution Protocol)
- 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 알아내는 프로토콜 (스위치의 MAC 주소 학습은 주체가 스위치, ARP는 주체가 호스트이다.)
- 사용 이유 : MAC 주소와 IP 주소는 함께 사용하지만, 기본적으로 IP주소(수신지)를 우선 고려하여 사용한다. 이 과정에서 IP 주소는 알지만 MAC 주소를 알지 못하는 상황이 발생하는데, 이 때 ARP 프로토콜을 사용한다.
- ARP 동작
- ARP 요청 (ARP Request)
- 호스트A가 ‘ARP 요청 브로드캐스트 메시지(ARP 패킷)’ 전송
- “누가 IP = 192.168.0.10을 가지고 있나요? 제 MAC 주소는 XX:XX:XX:XX:XX:XX이고, 제 IP는 192.168.0.1입니다”
- ARP 응답 (ARP Reply)
- 메시지에 해당하지 않는 호스트들은 메시지를 무시하고, 해당하는 호스트는 자신의 MAC 주소를 담은 ‘ARP응답 유니캐스트 메시지’(ARP 패킷)를 호스트A에게 전송.
- 호스트 A는 해당 호스트의 MAC 주소를 알게 됨
- ARP 테이블 갱신
- ARP 테이블(ARP Table) : ARP 요청-응답을 통해 알게 된 IP 주소와 MAC 주소의 연관 관계
- 테이블 항목은 일정 시간이 지나면 삭제 됨. 임의로 삭제 가능
- 테이블에 등록된 호스트에 대해선 ARP 요청을 보낼 필요 없음
- ARP 테이블(ARP Table) : ARP 요청-응답을 통해 알게 된 IP 주소와 MAC 주소의 연관 관계
- ARP 요청 (ARP Request)
추가과제
와이어샤크에서 실제 TCP/UDP 패킷 확인해 보기
와... 공부했지만 모르겠다ㅋㅋㅋㅋㅋㅋ아무래도 복습 한 번 더 쫘라락 해야할 것 같다...
그래도 저 까마득한 글자 중 알아볼 수 있는게 있어서 아주 기쁘다 호호
https://hongong.hanbit.co.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/
[한빛미디어] 혼자 공부하는 네트워크
컴퓨터 네트워크는 백엔드, 프런트엔드, 앱 개발 등 현재 국내 대다수 개발 분야와 직·간접적으로 연관되어 있습니다. 너무 쉽거나 어렵지 않도록 다수의 네트워크 전공 서적들을 면밀히 분석
hongong.hanbit.co.kr
https://youtube.com/playlist?list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&si=oVu20HN0-8EWwddV
혼자 공부하는 네트워크
네트워크 전공 지식의 중요성을 알지만 혼자서 공부하기 어려운 분들을 위해 만들었습니다. 너무 쉽거나 어렵지 않도록 다수의 네트워크 전공 서적들을 면밀히 분석하고, 방대한 컴퓨터 네트워
www.youtube.com
https://github.com/kangtegong/self-learning-cs2
GitHub - kangtegong/self-learning-cs2: 『혼자 공부하는 네트워크』 (한빛미디어)
『혼자 공부하는 네트워크』 (한빛미디어). Contribute to kangtegong/self-learning-cs2 development by creating an account on GitHub.
github.com
https://www.wireshark.org/download.html
Wireshark · Download
Wireshark: The world's most popular network protocol analyzer
www.wireshark.org