본문 바로가기
OS/Linux

네트워크 일반 - ARP, PING , TCP , UDP 통신

by Sou1 2020. 8. 9.
반응형

ARP(Address Resolution Protocol)

 - ARP는 통신을 원하는 호스트의 IP address를 알고 있을 때, 그 호스트의 MAC 주소를 알고자 할 경우에 사용
 
구분 IP주소 MAC주소
Layer Layer 3(네트워크 계층) Layer 2 (데이터링크 계층)
길이 32Bit 48Bit
성격 논리적인 주소  물리적인 주소
주소 변경여부 패킷이 출발지에서 목적지에 전달되는 동안 바뀌지 않고 전송된다. 타 네트워크로 패킷 발송시 전송 과정 중에 MAC 주소가 변경된다.
 
 
* ARP 테이블 확인방법
 명령어 : arp -a (IP , MAC주소, 유형) 
 명령어 : arp -s [IP주소] [MAC주소] 
     -> 유형 : 정적 인 IP, MAC 주소가 ARP table에 등록된다.
 
 명령어 : arp -d [IP주소] 
     -> IP주소에 해당하는 MAC 주소를 ARP Table에서 삭제한다.
 
 
 
* ICMP 기능
 - 인터넷상의 노드 간에 에러사항이나 통신 제어를 위한 메시지를 보고하게 할 목적으로 만들어진 프로토콜
 
 
* ICMP 메시지 종류
 - type 0 : Echo Reply
 - type 8 : Echo Request
: 특정 호스트에서 목적지 시스템까지 경로가 설정되어 있어 도달이 가능한지 목적지 시스템이 현재 운영 중인지 검사할 수 있는 유틸리티인 핑 프로그램이 사용하는 ICMP Type이다.
 
* Ping Test
ping 테스트는 Type8로 패킷을 목적지로 발송한다.
- 원격지 시스템에 도달했는지 여부와 시스템이 살아있는지 여부를 알수있다.
- 원격지 시스템에 도달하는 시간
- 원격지 시스템 type
 
time:  목적지까지 갔다 돌아오는데 걸리는 시간
바이트 : default값으로 32비트이다.
TTL : reply 하는 시스템에서 보내온 IP 패킷의 TTL 값 중간의 라우터들을 지날 때마다 IP 헤더의 TTL값이 1씩 감소한다.
TTL 값을 확인하여 중간 경로에 몇개의 Router를 거치는지 확인할 수 있다.
각 시스템 OS 마다 default TTL 값이 다르기 때문에 리턴되는 TTL 값을 가지고 상대방 시스템의 종류를 유추할 수 있다.
 
* OS별 TTL 값
 
ICMP TTL 시스템 및 OS
32 NT3.5, window95, AIX, HP9.0
64 Old version Linux, HP 10.0
128 Window 98 , NT 4.0 Windows 2000, 2003
255 Solaris, Cisco router, Linux
 
* IGMP (Internet Group Management Protocol)
 - 멀티캐스트 호스트와 라우터 사이에 동작하는 방식
 - 라우터는 호스트에게 멀티캐스트 참여 상태를 질의
 - 호스트는 라우터에게 수신할 멀티캐스트 주소를 통보
 
* TCP 프로토콜
 - TCP와 UDP는 프로토콜상 IP 상위계층으로 전송계층에 속하지만, TCP와 UDP의 차이점은 TCP는 신뢰성을 보장하고 UDP는 신뢰성을 보장하지 않는다.
 - TCP는 1:1 통신을 지원하고, UDP는 1:N 통신을 지원한다.
 
  TCP 프로토콜은 상호 시스템간 TCP 세션이 수립된 상태라야 서로간의 데이터를 교환할 수 있는 연결지향형 프로토콜이다.
 
* 3-Way handshake
 
SYN : 이 비트값이 1이면 Ture -> 동기화를 한다는 의미 -> 지금 전송하는 세그먼트가 연결을 초기화 하기 위해 사용되고 있음
 
ACK :  이 비트값이 1이면 True -> SYN, FIN, RST, PPSH, URG와 같은 세그먼트를 수신한 시스템이 이에 대한 승인한다는 의미 -> 세그먼트를 전달하고 있음을 표시
 
1. 클라이언트는 서버와의 연결상태 수립을 위해 TCB을 생성하고, TCP 해더에서 SYN Flag를 활성화 한다. 
그 뒤, 초기 순서번호 ISN을 서버로 전송한다. (ISN = Initial Sequence Number)
 
2. SYN 세그먼트를 전송받은 서버는 SYN에 대한 응답으로 클라이언트에서 보내온 시퀀스 번호에 +1을 더한값을 ACK 넘버로 지정하여 응답하면서, 추가로 자신의 초기순서번호 (ISN) 를 SYN 세그먼트에 실어 보낸다.
 
3. 클라이언트는 ACK 세그먼트를 받아서 연결상태를 수립. 추가로 받은 SUN 세그먼트에 대한 응답으로 서버에서 보내온 시퀀스번호에 +1을 더한 값을 ACK 넘버로 지정하여 다시 서버로 ACK 세그먼트를 전송한다.
 
 
3. 서버는 클라이언트로부터 ACK 세그먼트를 전송받은 후, 연결상태를 수립한다.
 이후, 데이터 교환시마다 시퀀스 넘버에서 전송되는 세그먼트의 바이트를 더한 만큼 증가하고, ACK 넘버는 +1을 더하여 설정한다.
 
 
이라한 3 WAY 핸드쉐이크 때문에 DDos 는 구조적으로 사라질 수 없다.
 - DDos 사건이 일어나는 이유는 TCP/IP 설계상에 문제라고 이야기 하는 부분이다.
 - 즉, 과도한 SYN을 클라이언트에서 서버로 요청하게 되면, 서버는 이에 대한 ACK를 하느라 실제 서비스 해야 하는 웹 서비스가 제대로 동작하지 않는 형태가 DDos 공격이 되는 것이다.
 
* UDP
UDP는 TCP/IP 프로토콜에서 TCP와 함께 4계층의 주요 프로토콜 중에 하나이다. 간단한 데이터그램 전달계층 프로토콜로 전송방식이 단순하고 서비스의 신뢰성이 낮고 데이터 그램의 도착 순서가 바뀐다.
빠른처리가 장점이다.
IP 프로토콜 번호 17번을 사용한다. (ICMP Type 17 : Address Mask Request)
 
* UDP 특징
 - 8바이트로 포트 번호와 최소한의 에러체크만 하는 매우 단순한 프로토콜
 - 목적지와 연결설정이 없으므로, 비연결형 서비스
 - TCP와 달리 Sequence/ACK 번호와 윈도우 사이즈가 없어서 순서제어와 흐름제어 불가
 - 연결 설정 및 제어기능이 빠지는 대신 빠른처리가 가능하며 실시간성을 요구하는 서비스에 적합하다.
 
* TCP와 UDP의 비교
 
구분 TCP UDP
연결설정 연결기반(3웨이 핸드쉐이킹) 비연결기반(단방향전송)
헤더길이 20바이트(옵션제외) 8바이트
데이터손실 없음 있음
순서/흐름제어 있음 없음
주요특징 신뢰성 실시간, 빠른처리
 
 
* 유니캐스트(Unicast)
 - 정보를 전송하기 위한 프레임에 자신의 MAC 주소와 목적지의 MAC 주소를 첨부하여 전송하는 방식
 - 유니캐스트 방식으로 데이터를 전송하게 되면 같은 네트워크에 있는 모든 시스템들은 그 MAC주소를 받는다. 
 - 받은 MAC주소가 자신의MAC 주소와 같지 않다면 MAC 주소를 버린다
 - 받은 MAC 주소가 자신의 MAC 주소와 같다면 프레임을 받아서 처리한다.
 
* 브로드캐스트 (Broadcast)
 - 로컬 네트워크에 연결되어 있는 모든 시스템에게 프레임을 보내는 방식
 - 주소가 미리 정해져 있고, 이 주소가 오면 모든 시스템은 패킷을 자신의 CPU로 전송하고 CPU가 패킷을 처리하는 방식
 - 모든 시스템에게 패킷이 전송되므로 트래픽이 증가
 - CPU도 패킷을 처리해야 하므로 성능에 저하가 생긴다.
 - 통신하고자 하는 시스템의 MAC 주소는 알지 못할 때 사용된다.
 - 통신하고 하는 시스템의 MAC주소를 네트워크에 있는 모든 시스템에게 알리는데 이 때 라우터끼리 정보를 교환하거나 새로운 라우터를 찾을 때 사용된다.
 
* 멀티캐스트 (Multicast)
- 멀티캐스트는 네트워크에 연결되어 있는 시스템 중 일부분에게만 정보를 전송할 수 있다.
 - 특정 그룹에 속해있는 시스템에게만 한번에 정보를 전송한다.
 - 주의 : 라우터가 멀티캐스트를 지원해야한다.
 
 
* 터미널 서비스 및 각종 원격 관리 서비스
* SSH
- 원격 서버와 접속하기 위하여 원격 접속 관리 프로그램의 하나인 Telnet을 많이 이용한다.
- Telnet은 평문으로 전달됨. 네트워크 스니핑(Sniffing)에 취약하다는 단점
- 이를 보안한 것이 SSH( Secure Shell ) 프로그램이다.
- 우수한 원격관리와 인증 및 SFTP 와 같이 세션 전달 및 포트 전달 가능
- 네트워크에 교환되는 데이터를 암호화한다.
 
* SSH 특징
 - 전송계층 프로토콜 : 서버 인증 , SFTP 처럼 신뢰할 수 있는 데이터 스트림상에서도 사용가능
 - 사용자 인증 프로토콜 : 서버 클라이언트를 인증하며 전송계층에서 실행
 - 연결 프로토콜 : 암호화된 터널로 사용자 인증 프로토콜
반응형