📍 앞에서 생성한 서버가 잘 접속되는지 통신을 확인해보자. 통신을 확인하는 방법은 여러가지가 있다.
IP 정보만으로 서버에 요청이 가능한지를 확인하는 것이다.
Ping은 ICMP 프로토콜을 사용한다.
ICMP란, IP가 신뢰성을 보장하지 않아 네트워크 장애나 중계 라우터 등의 에러에 대처할 수 없는데, 오류정보 발견 및 보고 기능을 담당하는 프로토콜이다. (TCP가 아니라 Port 번호가 없다)
RTT(Round Trip Time)는 한 패킷이 왕복한 시간을 의미한다.
네트워크 시간은 연결 시간, 요청 시간, 응답 시간 등으로 구성된다. RTT가 높을 경우 어느 구간에서 오래 걸리는지 확인하여야 한다.
IP 정보로 통신을 할 때, 실제 서버의 위치는 ARP를 통해 알 수 있다.
ARP(Address Resolution Protocol)란, 논리적 주소인 IP주소 정보를 이용하여 물리적 주소인 MAC 주소를 알아와 통신이 가능하게 도와주는 프로토콜이다. ARP Request를 Braodcast로 요청하면 수신한 장비들 중 자신의 IP에 해당하는 장비가 응답을 한다. 응답받은 NIC 포트 정보와 IP, MAC 주소를 기반으로 이후 통신을 진행한다.
$ ping [대상 IP]
$ ping google.com -c 1 PING google.com (216.58.220.110): 56 data bytes 64 bytes from 216.58.220.110: icmp_seq=0 ttl=115 time=38.167 ms -- google.com ping statistics -- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 38.167/38.167/38.167/0.000 ms
추가적으로, Ping Test 를 진행하며 더 관련된 내용은 → 포스팅을 통해 정리해놓았다.
Port check 를 통해서 서비스의 정상 구동 여부를 확인할 수 있다.
$ telnet [Target Server IP] [Target Service Port]
서버는 서비스에 하나의 포트번호를 오픈해두고도 많은 사용자와 연결을 맺을 수 있다. 현재 서버에서 (프로세스별로) 몇개의 연결이 가능한지 확인해보려면 몇개의 소켓파일을 생성할 수 있을지 생각해보면 된다.
$ sysctl fs.file-max $ ulimit -aH
만약 AWS Security Group에 80 포트번호만 오픈해두었는데, 80번으로 서버에 연결 요청시에 8080번으로 연결되도록 소켓을 생성하려면 다음과 같이 진행한다.
## 원격지 서버에서 8080 포트로 소켓을 연다 $ sudo socket -s 8080 ## iptables 를 활용하여 port forwarding 설정 ##80번 포트로 서버에 요청을 하면 서버의 8080번 포트와 연결 $ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 ## 서버의 공인 IP 확인 $ curl wgetip.com ## 자신의 로컬에서 연결 $ telnet [서버의 공인 IP] 80 ## 설정 삭제 $ sudo iptables -t nat -L --line-numbers $ sudo iptables -t nat -D PREROUTING [라인 넘버]
HTTP Status code를 기반으로 이상유무를 판단할 수 있다.
(다만, 서비스별로 사용하는 응답코드가 다르기도 하고 그 의미가 다르기도 하다)
$ curl [option] [URL] $ curl -I google.com
tcpdump
, wireshark
등의 도구를 사용하여 패킷을 모니터링할 수 있다.
tcpdump는 네트워크 인터페이스를 거치는 패킷들을 가로채고 출력해주는 프로그램이다.
보통 윈도우에서는 wireshark를 사용하듯 tcpdump 로 패킷 캡쳐한 내용을 파일로 정리한 다음 wireshark로 읽어서 분석할 수 있다.
$ tcpdump host 192.168.0.207 $ tcpdump port 80 $ tcpdump net 192.168
Wirshark는 네트워크 패킷을 캡처하고 분석하는 오픈소스 도구이다.
Wireshark 기본 작동 개념은 네트워크로 돌아다니는 패킷(네트워크상의 데이터)을 수신하여 저장한다.
이때, PCAP이라는 파일 포맷으로 저장된다. (*PCAP(Packet Capture) : 네트워크 트래픽을 캡처하는 API 구성)
Wireshark는 자체 프로그램으로 네트워크 트래픽을 캡처하는 것이 아니고, 운영체제에서 지원하는 캡처 라이브러리를 이용하여 수집한다.
→ wireshark를 활용하여 패킷을 캡쳐하면 통신과정에서 일어난 이벤트를 기록할 수 있다.
통신 확인하는 것은 OSI 7 Layer 기준으로 확인을 하게 된다.
OSI 7 Layer 란 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것 이다.
어떤 스탭으로 인터넷이 문제가 생기고, 문제 발생에 대해 구간 대로 확인하기 위해서는 OSI 7 Layer 에 관하여 알아야한다.
OSI 7 Layer 와 관련된 자세한 정리는 다음 → 포스팅에 정리해놓았다.
[참고]
https://www.clien.net/service/board/cm_mac/2137505
프로젝트 공방-1기 (통신 확인하기)