Skip to content

cobinding/network-websocket-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

network-socket-task

[NETWORK] KAU 컴퓨터 네트워크를 수강하며 진행한 소켓 통신 과제 레포

목차

  1. 포트포워딩 환경 세팅
  2. UDP 통신 와이어샤크 분석
  3. TCP 통신 와이어샤크 분석
  4. 동일 컴퓨터에서 캡쳐 불가능한 이유
  5. 요약 및 느낀점


1. 포트포워딩 환경 세팅

프로젝트에서 Server 역할을 맡았으므로, Client 역할을 맡은 팀원이 나의 환경으로 접속할 수 있도록 세팅한다.

  • 내부 IP: 공유기가 내 컴퓨터에 할당한 IP 주소로, MacOS는 wifi 설정에서 확인 가능하다.
  • 포트: 패킷 분석을 위해 다른 포트들과 겹치지 않도록 12000으로 설정한다.

이 포트 값과 공인 IP를 통해 Client 역할자가 나에게 통신을 요청 및 커넥션할 수 있게 된다. (방화벽 허용 시에)


2. UDP 통신 와이어샤크 분석

image *서버 측에서 요청 처리 로직을 확인하기 위해 print로 디버깅하였습니다.


image

port 12000으로 필터링

위 결과에 대해 와이어샤크로 패킷을 캡쳐해보면, 클라이언트 측 175.213.35.145이 서버측 192.168.45.195와 통신하는 것을 알 수 있다.


image

  • 하나를 선택해서 상세 내용을 살펴보면, 클라이언트의 port는 50662로 확인된다.
  • 16비트로 표현된 CheckSum을 확인할 수 있다. 이를 통해 패킷이 전송과정 중에 손상되지 않고 잘 전달되었음을 확인할 수 있다.


image

  • 두 번째 패킷 상세 내용을 보면 Stream index가 21로, 첫 번째의 패킷 상세 내용과 같음을 알 수 있다. 이 내용은 하나의 통신에 대한 내부 와이어샤크 매핑으로 소문자로 적힌 문자열을 보내고 → 다시 그 문자열을 UpperCase로 반환하는 하나의 통신이 같은 index를 갖는 것을 확인할 수 있다.


클라이언트 담당자의 화면에서 서버 측에서의 반환이 잘되었음을 확인하였다.



3. TCP 통신 와이어샤크 분석

image image

TCP는 UDP와 달리 segment numbering, 3 way handshake 등을 통해 신뢰성을 보장하는 통신을 한다. 따라서 wireshark를 통해 캡쳐했을 때 위와 같이 복잡한 통신 과정을 보인다.


Wireshark를 통해 알아본 3way handshake 과정

  1. SYN

image

SYN - Sequence Number가 2917077022로 상대값은 0이다. 즉, 첫 번째 TCP 통신으로, 서버는 이에 대한 SYN, ACK를 반환해야 한다. 이를 다음 패킷의 상세내용을 통해 확인할 수 있다.

  1. SYN, ACK

image

  • Acknoweldgement number를 보면 2917077023으로, 클라이언트에게 확인했다는 신호를 준다.
  1. ACK

image

  • sequence number 1증가, Acknowledgment number로 확인 전달

이를 통해 서로 3way를 문제없이 잘 하고있음을 wireshark를 통해 확인하였다.


4. 동일 PC wireshack capture

Windows 네트워킹은 같은 소스 및 대상 주소를 가진 루프백 어댑터가 없고, 트래픽이 드라이버 스택에 도달하지 않으므로 Windows 운영체제 환경에서 와이어샤크가 패킷을 가로챌 때 제대로 기록되지 않기 때문이다.


5. 요약 및 느낀점

wireshark를 통해 UDP와 TCP의 차이점을 확실히 알 수 있었고, TCP 통신의 부하에 대해서도 고민하게 되었다.

About

[NETWORK] KAU 컴퓨터 네트워크를 수강하며 진행한 소켓 통신 과제 레포

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages