Search

connection check

1. OSI 7 Layer

{% embed url=“https://www.youtube.com/watch?v=1pfTxp25MA8” %}

1-1. physical layer

역할 : Bit Stream(이진수 흐름)을 전기, 빛, 등의 신호로 변환
PDU(Protocol Data Unit) : Bit
대표장비 : 케이블(LAN-UTP, WAN-Serial), 허브, 리피터, 커넷터(LAN-Rj45) 등
유형범위 : 로컬 장비간에 전성된 전기 혹은 빛의 신호

1-2. data-link layer

역할 : 물리적 주소를 이용해서 노드(L2 스위치에 연결될 수 있는 3계층 이상의 장비) 간 연결
PDU : frame
대표장비 : 브릿지, L2 스위치 등
유형범위 : 로컬 장비 간에 전송된 하위 수준 데이터 메시지
프로토콜 및 기술 : LAN-Ethernet Protocol, WAN-PPP, HDLC 등

1-3. network layer

역할 : 논리적 주소로 최초 출발지로부터 최종 목적지까지의 최적 경로를 결정한다.
PDU : packet, 데이터그램
주소 : 논리적 주소 - IP(4 byte), IPX, Apple Talk
대표장비 : 라우터, L3 스위치
유형범위 : 로컬 혹은 원격 장비 간의 메시지
프로토콜 및 기술 : IPv4, IPv6, ARP, ICMP, IGMP, Routing Protocol(RIP, EIGRP, OSPF)

1-4. transport layer

역할 : 포트번호를 이용해서 서비스를 구분하고 데이터의 전송을 담당한다.
PDU : segment
주소 : Port(2 byte), well-known : 0-1023, 그외 : 1024-65535
대표장비 : L4 스위치
유형범위 : 소프트웨어 프로세스 간의 통신
프로토콜 및 기술 : TCP(확인응답, 신뢰성), UDP(빠른속도), NetBEUI

1-5. session layer

역할 : 응용 프로그램 간 세션 수립, 유지, 종료
세션 : 두 사용자 간의 작업 시작부터 끝까지의 실시간 논리적 연결을 의미
유형범위 : 로컬 혹은 원격 장비 간의 세션
프로토콜 및 기술 : NetBIOS, 소켓, 네임드 파이프, RPC

1-6. presentation layer

역할 : 데이터의 표현 - 확장자 연결, 압축, 암호화, 변환
유형범위 : 어플리케이션 데이터 표현
프로토콜 및 기술 : SSL, redirector, MIME

1-7. application layer

역할 : 사용자에게 인터페이스를 제공하고 원본 데이터를 생성한다.
PDU(Protocol Data Unit) : 사용자 데이터
유형범위 : 어플리케이션 데이터
프로토콜 및 기술
HTTP(TCP_80), HTTPS(TCP_443), SMTP(TCP_25), POP3(TCP_110), FTP(TCP_20,21), TFTP(UDP_69), Telnet(TCP23), SSH(TCP_22), DHCP(UDP_67, 68), DNS(UDP_53), SNMP(UDP_161, 162)

2. Wireshark

packet 을 캡쳐하여 통신 과정에서 일어난 이벤트를 기록할 수 있다.

3. ping check

ping check 을 통해서 ip 정보만으로 서버에 요청이 가능한지 확인할 수 있다.

3-1. ICMP

protocol 을 사용하며
IP 가 신뢰성을 보장하지 않아서 네트워크 장애나 중개 라우터 등의 에러에 대처할 수 없을때, 오류정보 발견 및 보고 기능을 담당하는 프로토콜이다.
TCP 가 아니기 때문에 포트번호가 없다.
//사용방법 : ping [대상 ip]ping google.com -c 1 PING google.com (142.250.207.110): 56 data bytes 64 bytes from 142.250.207.110: icmp_seq=0 ttl=56 time=36.357 ms --- google.com ping statistics ---1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 36.357/36.357/36.357/0.000 ms
Shell
복사
RTT, Round Trip Time 이란 한 패킷이 왕복한 시간을 의미한다.
네트워크 시간은 연결시간, 요청시간, 응답시간으로 구성된다.
RTT 가 높을 경우, 어느 구간에서 오래걸리는지 확인해야한다.

3-2. ARP, Address Resolution Protocol

논리적인 주소인 IP 주소를 이용해서 물리적인 주소인 MAC 주소를 알아와 통신 가능하도록 해주는 프로토콜이다. ARP Request 를 Broadcast 로 요청하면, 수신한 장비들 중, 자신의 IP에 해당하는 장비가 응답을 한다.
응답받은 NIC 포트정보와 IP, MAC 주소를 기반으로 이후 통신을 진행하게 된다.

4. Port Check

서비스의 정상적인 구동 여부를 확인할 수 있다.
telnet [target server ip] [target service port]
서버는 서비스에 하나의 포트번호를 오픈해두고 많은 사용자와 연결을 맺을 수 있다.
그렇다면, 현재 서버에서 프로세스별로 몇 개의 연결이 가능한지 확인해볼 수 있을까?
# port forwarding## 원격지 서버에서 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 [라인 넘버]
Shell
복사

5. HTTP Response Check

Http status code 를 기반으로 이상 유무를 확인할 수 있다.
서비스 별로 사용하는 응답코드도 다르고, 의미도 다르다.
HTTP message 형태 참고
curl -I google.com HTTP/1.1 301 Moved Permanently Location: http://www.google.com/ Content-Type: text/html; charset=UTF-8 Date: Mon, 27 Feb 2023 09:06:28 GMT Expires: Wed, 29 Mar 2023 09:06:28 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 219 X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN
Shell
복사

5-1. 우리는 어떻게 google.com 으로 요청할 수 있는가

// Some code $ sudo systemd-resolve --flush-caches$ nslookup google.com $ sudo tcpdump -nni eth0 port 53
Shell
복사
1.
우선 /etc/hosts 파일에 정적으로 설정한 정보를 확인한다.
2.
로컬의 DNS Cache를 확인한다.
3.
/etc/resolv.conf에 설정한 정보를 기반으로 DNS 서버에게 질의한다.
4.
DNS 서버는 정보가 있으면 반환하고 없으면 본인의 상위 DNS에게 질의를 하여 정보를 알아온다.
5.
도메인에 해당하는 IP를 알게되면 DNS Cache에 추가한다.

6. 패킷 분석

tcpdump, wireshark 등의 도구를 사용하여 패킷을 모니터링할 수 있다.
$ tcpdump host 192.168.0.207 $ tcpdump port 80 $ tcpdump net 192.168
Shell
복사