2024.10.02 5주차 수업
인터넷 계층
● 라우팅 프로토콜
- 라우팅 : 데이터 패킷을 출발지에서 목적지까지 전달
- 효율적인 전송로를 선택
- 주기적으로 라우팅 테이블을 갱신함으로써 목적지까지 패킷 전달
- IP 헤더 정보를 읽어 목적지 IP를 알아낸 뒤, 목적지까지 최적 경로를 제공
- ※정적 라우팅 (Static Routing)
- ※동적 라우팅 (Dynamic Routing)
※ 정적 라우팅 (Static Routing)
- 관리자가 설정한 경로를 고정적으로 사용하는 프로토콜
- 데이터의 출발지에서 목적지까지의 경로를 고정하여 사용
- 한 번 설정한 라우팅 테이블 정보를 관리자가 직접 변경하기 전까지 변경되지 않음
- 라우터에 부하가 적게 걸려 메모리 관리에 유리하며, 우선순위가 높음
- 경로에 장애가 발생하거나 예상치 못한 에러가 발생한 경우 대처가 어렵고 관리자가 직접 경로를 재설정 해야 함
- 네트워크 구조가 간단하고 환경 변화가 적은 네트워크에 적합
- 주 사용 프로토콜 : Floating Static Routing
※ 동적 라우팅(Dynamic Routing)
- 네트워크 상황 변화에 따라 인접 라우터끼리 경로 정보를 교환하여 최적의 경로를 실시간으로 결정하는 프로토콜
- 데이터의 출발지에서 목적지까지의 경로가 네트워크 환경 변화에 능동적으로 대처하여 실시간으로 변화
- 라우터 간의 프로토콜을 바탕으로 라우팅 아록리즘을 통해 자동으로 경로 설정
- 다수의 네트워크가 연결되어 수시로 통신환경이 변화하는 최근의 대부분의 네트워크에 적합
- Distance Vector Routing, Linked State Routing
● 거리 벡터 방식 (Distance Vector Routing)
- 통과하는 라우터 수가 적어 거리가 짧은 쪽으로 경로를 설정하는 프로토콜
- 모든 라우터까지의 거리(Distance) 정보를 모든 라우터에 주기적으로 갱긴
- 밸먼-포트(Bellman-Ford) 알고리즘으로 최단 경로 도출
- RIP, IGRP, EIGRP, BGP
● 링크 상태 방식(Link State Routing)
- 라우터와 라우터를 연결하는 Link의 상태에 따라 효율적이고 빠르게 도착하는(비용이 적게 드는) 쪽으로 경로를
설정하는 프로토콜
- 인접한 라우터까지의 네트워크의 대역폭, 지연 정보 등을 종합적으로 고려한 링크비용 (Link Cost) 정보를 사용하되,
비용 변화가 발생한 경우에만 정보 갱신
- 다익스트라(Dijkstra) 알고리즘을 바탕으로 최소비용 경로 도출
- OSPF
● 라우팅 범위에 따른 라우팅 프로토콜의 분류
- IGP(Internal Gateway Routing Protocol, 내부 게이트웨이 라우팅 프로토콜)
- 하나의 동일 그룹(하나의 도메인) 내에서 라우팅 정보를 교환하여 경로 설정
- EGP(Exterior Gateway Routing Protocol, 외부 게이트웨이 라우팅 프로토콜)
- 여러 그룹 사이의 라우팅 정보를 교환하여 경로 설정
- 게이트웨이로 구획된 도메인 밖(Exterior) 정보를 활용한 라우팅 프로토콜
● RIP(Routing Information Protocol)
- 거리벡터 방식 라우팅 프로토콜의 하나로, 라우터의 대수(=홉(Hop) 수)에 따라 최단경로를 결정하는
동적 라우팅 프로토콜 (홉(Hop) 수는 하나의 라우터를 통과할 때마다 1씩 늘어난다)
- 초기 개발된 라우팅 프로토콜로, 계산할 수 있는 최대 홉 카운트 수가 15이기 때문에 홉 수가 16을 넘으면 패킷을 소멸시키고 새로운 패킷을 기다림
- 30초 주기로 라우팅 테이블 정보를 업데이트 하는데, 모든 라우터에 브로드캐스팅 하기 때문에 과부하를 초래하여 중,대규모 네트워크에는 적합하지 않음
- 30초 주기로 정보를 갱신하기 때문에 문제가 발생 시 최대 30초동안 문제 발생 여부를 알기 어려움
- RIP 단점 극복 위해 라우터 업데이트 패킷 주기를 늘리고, 최대 카운트 가능한 홉수를 255까지 늘린 IGRP(Interior Gateway Routing Protocol), IGRP의 단점을 보완하기 위해 링크상태 방식의 일부 장점을 채택하고, 최대 카운트 가능한 홉수는 254까지인 EIGRP(Enhanced-IGRP) 등 개발
● OSPF(Open Shortest Path First Protocol)
- 링크상태 방식 라우팅 프로토콜의 하나로, 네트워크의 상태와 지연 발생 여부, 홉 카운트 등을 종합적으로 검토하여 경로를 결정하는 동적 라우팅 프로토콜
- RIP나 IGRP 시리즈의 단점을 보완, 최근 대중적인 프로토콜로, 홉수는 링크비용(Link Cost) 중 경로비용(Path Cost)을 결정하는 요소 중 한 가지로 사용하여 그 비중을 낮춤
- 일정 주기로 라우터 정보를 업데이트 하지 않고 네트워크에 변화가 발생할 때 해당 부분만 업데이트 하며, 업데이트 내용 또한 상대적으로 짧고 간단한 링크 상태 정보 형태로 교환하기 때문에 데이터 부하가 적어 대규모 네트워크에도 적합
- 문제가 발생할 경우 실시간 대응 가능
- 단, 라우팅 알고리즘이 복잡하여 대규모 네트워크에서 사용시엔 고성능 라우터 필요
● ICMP(Internet Control Message Protocol)
- 네트워크의 상태 오류를 확인하는 프로토콜로, TCP/IP를 이용하여 라우터 단에서 두 호스트 간의 통신을 관리하며 오류를 제어
- 통신상의 발생 오류를 서로에게 알려주거나, 양단 간의 통신이 가능한지 여부를 확인
- 네트워크 상황을 진단하고 데이터 전송을 위한 최적 경로를 보내는 곳 호스트에게 통보
- 라우터의 데이터 처리 속도에 비해 패킷이 너무 빨리 도착하거나 라우터에 혼잡이 발생할 경우, 이를 다른 시스템에 통보하여 새로운 통신 경로를 설정
- ping 명령어와 traceroute 명령어
- 데이터그램=패킷, 네트워크 계층에서 전송하는 데이터의 단위이다.
● ICMP의 헤더
Type(타입) | Code(코드) | Checksum(체크섬) |
Opional Data(추가 정보) : Identifier(식별자), Sequence number(순서) 등 | ||
메시지 내용 |
● IGMP
- 특정 그룹에게만 메시지를 전송하는 멀티캐스트 전송에서, 데이터를 전송 받는 그룹의 사용자를 관리하는 프로토콜
- 어떤 그룹에 IP주소가 포함되어 있는지 정보를 라우터에 통보
- 1:N 방식으로 특정 멀티캐스트 그룹에 메시지를 전송하며, 메시지 수신 여부를 알려줌.
- TTL 제공
- 멀티캐스트의 IP주소는 IP Class D를 사용
● ARP(Address Resolution Protocol)
- 주소변환 프로토콜(IP address -> MAC address)
- 네트워크 주소인 IP 주소를 이용하여 물리적인 주소(하드웨어 주소)인 MAC 주소를 알아내는 프로토콜
- ARP Cache Table : IP주소와 MAC 주소 간의 매칭 정보를 저장하고 있는 매핑 테이블
- 동작 방법
- IP 프로토콜이 패킷 전송을 위해 ARP Cache Table 조회
- MAC 주소가 등록되어 있지 않다면, ARP request를 브로드캐스팅
- 해당 IP의 인접 컴퓨터가 ARP request packet을 수신하면, 자신의 MAC 주소를 보냄(ARP reply)
- 반복을 통해 인접 컴퓨터의 IP주소&MAC주소를 ARP Cache Table로 등록
- 확인 : arp(리눅스), arp-a(윈도우)
● ARP spoofing(ARP 스푸핑)
- ARP를 악용한 네트워크 공격
- ARP request Packet에 대한 응답을 당초 목적하는 수신자가 아닌 다른 사용자가 여기에 대신 응답하여 잘못된 MAC주소를 등록(해커의 MAC 주소 등록)
● RARP(Reverse Address Resolution Protocol)
- ARP와는 반대 방향으로 동작하는 주소 변환 프로토콜(MAC address -> IP address)
- 물리적 주소인 MAC주소를 이용하여 네트워크 계층의 IP주소를 알아내는 프로토콜
3. 전송계층
● TCP 혹은 UDP 프로토콜을 이용해 송신자와 수신자를 논리적으로 연결하고 전송할 데이터의 흐름과 순서를 제어, 데이터의 분절, 에러 정정 등 전송을 보조
- TCP 프로토콜 : 연결지향 방식
- UDP 프로토콜 : 비연결성 방식
- 세그먼트(segment) : 전송 계층에서의 데이터 단위(PDU), 메시지에 TCP 혹은 UDP 헤더가 붙은 것
● TCP(Transmission Control Protocol)
- 네트워크 계층의 프로토콜
- 강력한 에러 제어 기능을 바탕으로 신뢰성 있는 데이터 전송, 흐름 제어 등의 기능 수행
- 연결 지향형 프로토콜(connection-oriented)
- 연결 : 3-way handshaking
- 종료 : 4-way handshaking
● TCP 헤더
- 송,수신자 포트 번호
- 시퀀스 번호 : 메시지의 순서
- ACK 번호 : 송신자의 메시지를 잘 받았다는 표시이며, 다음 번 패킷 번호를 적음
- Head Length : TCP 헤더 크기
- Reserved : 예약필드
- 제어 필드
- CWR(Congestion Window Reduced)
- ECE(ECN Echo)
- URG : 긴급 메시지 여부
- ACK : ACK 값의 셋팅 여부(1: 유효, 0: 미포함)
- PSH : 버퍼링된 데이터를 상위 계층으로 전달 할 것
- RST(reset) : 연결된 회선에 강제 리셋 요청
- SYN(synchronize) : TCP 연결 설정 초기화
- FIN(Finish) : 송신자가 데이터 전송을 마침
- 윈도우 크기 : 수신자의 윈도우 크기
- Checksum : 에러 확인
- Urgent Point : 긴급 메시지의 위치 안내
● 흐름 제어(Flow Control) - 슬라이딩 윈도우
- 클라이언트가 수신 받을 수 있는 용량 만큼만 서버가 데이터를 전송하는 방법
- 신뢰성을 중시하는 TCP 프로토콜의 느린 전송 속도를 보완하며, 클라이언트가 ACK를 보내지 않더라도
서버-클라이언트 간 미리 정해진 프레임 수(Window Size, 데이터가 나가는 윈도우의 크기) 만큼을 연속적으로 전송
- 데이터가 전송되고 ACK가 수신될 때마다 전송이 확인된 패킷 이후의 패킷으로 윈도우의 범위를 이동(Sliding)하여
뒤이어 전송하기 때문에 '슬라이딩 윈도우'라고 칭함
● 혼잡 제어(Congestion Control)
- 혼잡 : 라우터 버퍼의 오버플로우 혹은 큐잉 지연 시간 증가 (전송 중인 패킷은 버려짐(drop))
- Solw start : 서버가 데이터를 보낼 때, 처음에는 최소 단위(1)로 보내다 점차 지수의 크기로 (2배씩) 증가된 단위로 늘려가며 데이터를 보내는 방식 (exponential increase)
- 혼잡 회피(Congestion avoidance) : 임계값(ssthresh)을 초과하면 선형적(+1)으로 증가(linear increase)
- 빠른 복구(Fast Recovery) : 경미한 혼잡 상황에서 오류가 복구되면 slow start 구간을 건너뛰고 혼잡회피 단계로 진입
- 이전 데이터 전송에 실패했던 임계 값에 이르게 되면 Congestion Avoidance를 시작하고, 전송 단위를 1/2로 낮추고 다시 올리는 것을 반복하여 최적 단위를 도출
● UDP
- 네트워크 계층의 프로토콜
- 비연결성, 비신뢰성을 바탕으로 빠른 속도로 데이터 전송
- 재전송 기능이 없어 송수신 과정에서 패킷의 손실 발생 가능
- 정보 누출 가능성이 있으나 프로토콜의 부하가 적어 데이터를 분산하여 전송할 때 많이 사용
- 클라이언트의 수신 여부(ACK)를 확인하지 않으며, 체크섬만 계산
- UDP 헤더
- 송수신자 포트 번호
- length : 헤더를 포함한 UDP 데이터그램 크기
- checksum : 에러 확인
4. 응용 계층
● Telnet
- 사용자가 원격 장치와 통신할 수 있도록 하는 원격 프로토콜
- Telecommunication Network, Terminal Network, Teletype Network의 약어
- TCP/IP 프로토콜의 응용 프로토콜로 23번 포트 사용
- 멀리 떨어진 터미널의 메인 프레임 컴퓨터를 관리하기 위한 원격 제어 목적으로 개발
- 텍스트 기반 컴퓨터 프로토콜이므로 GUI는 지원하지 않음
- 주요 기능
- 원격 시스템 제어를 위한 가상 네트워크 터미널을 결정
- 클라이언트와 서버가 데이터를 송수신할 수 있는 매커니즘을 포함
- 임이의 프로그램이 클라이언트가 되거나, 클라이언트나 서버 어느 한쪽이 데이터 송수신 옵션을 변경할 수 있음
- 보안이 취약, 스니핑 등 공격에 무방비 -> Telnet 대신 SSH 사용이 일반화
● SSH(secure Sheell)
- 보안되지 않은 네트워크를 통해 서버나 클라이언트 측 컴퓨터와 안전하게 데이터를 송수신할 수 있게 하는 네트워크 프로토콜 - 강력한 암호화 및 인증 시스템으로 통신 보안성 향상
- TCP/IP 프로토콜의 응용 프로토콜로 22번 포트를 사용
- Putty 프로그램을 통해 SSH로 연결한다.
- Telnet과 달리 강력한 암호화 알고리즘에 다라 암호화하는데, 이 때 클라이언트와 서버가 서로 동일한 대칭 암호화 알고리즘에 의해 암호화 키를 생성
- SSH 프로토콜의 일반적인 사용 사례
- 사용자 및 자동화된 프로세스에 대한 보안 연결 제공
- 대화형 및 자동화된 파일 전송
- 원격 명령 실행
- 네트워크 인프라 및 기타 주요 시스템 구성 요소를 관리
- SSH는 Telnet을 대체하여 보안 면에서 향상됨
● FTP
- 네트워크 상 서버와 클라이언트 간의 파일전송을 위한 프로토콜
- TCP/IP 프로토콜의 응용 프로토콜로 20번, 21번 포트를 사용
- FTP 서버에 접속하기 위한 연결 제어 포트는 21번이며, 데이터 송수신을 위한 포트는 20번
- 전송 모드에 따라 Active Mode일 때에는 20번 포트를 그대로 사용하고, Passive Mode일 때는 서버가 지정한 포트를 통해 데이터 교환
- 제어 포트와 데이터 포트는 각각 독립적으로 작동
- 클라이언트가 제어 포트를 통해 서버에게 파일 전송을 요청하면 서버는 데이터 포트를 통해 클라이언트에게 데이터를 전송
● HTTP(Hyper-Text Transfer Protocol)
- 인터넷 WWW(World Wide Web) 상에서 웹 서버와 사용자(클라이언트, 컴퓨터) 간의 정보 교환과 통신을 위한 프로토콜
- TCP/IP 프로토콜의 응용 프로토콜로 80번 포트를 사용
- State-less 프로토콜
- 프로토콜의 특성상 로그인과 세션 개념을 생성할 수 없으며, 이를 보완하기 위해 쿠키(Cookie)를 개발하여
방문자의 방문 이력이나 이전 연결 정보 확인 가능
출처 : 공준익 교수님 PPT