TCP/IP 프로토콜
- 네트워크는 서로 다른 기종의 컴퓨터로 구성되어 있어 각 네트워크 간에 공통으로 사용할 수 있는 프로토콜의 필요성 대두 → 인터넷에서 컴퓨터 간의 통신이 가능하도록 표준화한 통신규약인 TCP/IP 채택
- TCP/IP = 전송 제어 프로토콜(TCP) + 인터넷 프로토콜(IP)
- 인터넷에서 사용하는 응용 프로그램은 대부분 RCP/IP 프로토콜을 이용하여 데이터를 교환
계층
OSI 참조 모델 7계층 | TCP/IP 프로토콜 계층 |
응용 (Application) | 응용 계층 (FTP, 텔넷, SMTP, DNS, DHCP) |
표현 (Presentation) | |
세션 (Session) | |
전송 (Transport) | 전송 계층 (TCP, UDP) |
네트워크 (Network) | 네트워크 계층 (IP, ARP, ICMP, IGMP) |
데이터링크 (Data Link) | 네트워크 접속 계층 Network Interface (이더넷, 802.11x, MAC/LLC, PPP 모뎀, NIC) |
물리 (Physical) |
네트워크 접속 계층
- TCP/IP에서는 하위 계층인 물리 계층과 데이터 링크 계층을 특별히 정의하지 않았으며, 단지 모든 표준 및 임의 네트워크를 지원 가능
- 데이터 링크 계층의 역할을 하는 TCP/IP 프로토콜: 이더넷, 802.11x, MAC/LLC, SLIP, PPP 등
- 송신 측 컴퓨터: 상위 계층에서 전달받은 패킷에 물리적 주소인 MAC 주소 정보가 있는 헤더를 추가하여 프레임을 만든 후 그 프레임을 하위 계층인 물리 계층에 전달
- 수신 측 컴퓨터: 데이터 링크 계층에서 추가한 헤더를 제거하여 상위 계층인 네트워크 계층으로 전달
네트워크 계층
- 인터넷 계층
- 네트워크의 패킷 전송을 제어
- 데이터를 전송할 때 경로는 네트워크 계층에서 선택
- IP, ARP, ICMP, IGMP
- IP의 기능
- 네트워크의 주소 체계 관리
- 데이터 그램 정의
- 전송에 필요한 경로 설정
- 송신 측 컴퓨터: 상위 계층에서 전달받은 패킷에 논리적 주소인 IP 주소를 포함하는 헤더를 추가하여 하위 계층인 데이터 링크 계층으로 전달
- 수신 측 컴퓨터: 하위 계층에서 전달받은 패킷의 헤더 정보를 확인한 후 송신 측 컴퓨터의 네트워크 계층에서 추가한 헤더를 제거하여 상위 계층인 전송 계층으로 전달
전송 계층
- 상위 계층에서 볼 때 두 호스트 간의 데이터 전송을 담당하는 계층
- TCP, UDP
- 네트워크 양단의 송수신 호스트 간에 신뢰성 있는 전송 기능 제공
- OSI 참조 모델에서는 세션 계층의 일부와 전송 계층에 해당
- TCP/IP에는 시스템의 논리 주소와 포트가 있어 각 상위 계층의 프로세스를 연결하여 통신
- TCP: 전송되는 패킷에 오류와 중복이 없게 하고, 보낸 순서대로 상대편이 받을 수 있도록 신뢰성 있는 데이터 전송을 보장하는 프로토콜
- 신뢰성이 있는 만큼 헤더의 오류코드에 대응할 수 있는 각종 정보가 들어있음
응용 계층
- TCP/IP 프로토콜의 범위는 응용 계층의 프로토콜까지 포함
- FTP, SMTP, SNMP(Simple Network Management Protocol) 등
- TCP/IP 프로토콜을 이용한 응용 프로그램 중에서 사용자가 직접 사용하는 인터넷 메일 프로그램이나 웹브라우저 등을 응용 계층으로 분류 가능
네트워크 주소
- 일반적으로 네트워크 인터페이스는 거의 대부분 이더넷(Ethernet) 방식 사용
- MAC 주소, IP 주소, hostname
TCP/IP 주소의 구조
물리 주소 (Physical Address)
- 네트워크 인터페이스 카드(NIC)에 할당된 고유한 MAC(Media Access Control) 주소
- 링크 주소 또는 통신망에서 정의된 노드의 주소
- 하드웨어를 위한 주소
- 네트워크 접속 계층에서 사용
- LAN 내에서 장치를 식별
- 48비트로 구성되며, 콜론이나 하이픈으로 구분되는 6개의 16진수로 표현
- AB-CD-EF-12-34-56
- 앞의 세 자리는 제조사 번호, 뒤의 세 자리는 일련번호
논리 주소 (Logical Address)
- IP 주소, 인터넷 주소
- 네트워크 계층에서 사용
- 기존 물리 주소와는 별도로 각 호스트를 식별할 수 있는 유일한 주소
- 인터넷으로 연결된 네트워크에서 각 컴퓨터를 구분하기 위해 사용
- IPv4: 1바이트의 크기를 가진 4개의 수로 구성(4 byte)
- C 클래스의 구조: 네트워크 부분(앞의 3 byte) + 호스트 부분(뒤의 1 byte)
- 넷마스크(서브넷 마스크): IP 주소에서 네트워크 부분을 알려주는 역할
- 하나의 네트워크를 다시 작은 네트워크(서브넷)로 분리할 때도 사용
- IP 주소와 넷마스크를 2진수로 변환한 뒤 두 값으로 AND 연산을 수행하면 네트워크 부분만 남음
- 브로드캐스트 주소: 같은 네트워크에 있는 모든 컴퓨터에 메시지를 보낼 때 사용하는 것, 호스트 부분을 모두 1로 설정(255)
- hostname: 네트워크에 연결된 장치들에게 부여되는 고유한 이름
포트 번호 (Port Number)
- 특정 호스트 내의 특정 프로세스를 식별
- 전송 계층에서 사용
- 16비트로 구성되어 있으며, 주로 TCP와 UDP 프로토콜에서 사용
- /etc/services 파일에서 각 서비스 별 포트번호가 무엇인지 정의
네트워크 설정
- 네트워크 관리자: 기본 네트워킹 데몬
- nmcli 명령: 네트워크 관리자를 사용하는 명령 기반 도구
- [설정] - [네트워크]: gnome에서 제공하는 GUI 기반 도구
- nm-connection-editor: 네트워크 관리자를 사용하는 GUI 기반 도구, [제어판] - [네트워크]에서 설정할 수 없는 부분도 설정 가능
- ip 명령: 네트워크를 설정하는 명령을 제공
네트워크 설정에 필요한 주소
- IP 주소
- 넷마스크와 브로드캐스트 주소
- 게이트웨이(라우터) 주소
- DNS 주소
네트워크 관리자
- NetworkManager
- 네트워크의 제어와 설정을 관리하는 데몬
- IP 주소 설정
- 고정 라우트 설정
- DNS 설정
- 유닉스와 리눅스에서 제공하던 스크립트 파일인 ifcfg 형식의 네트워크 설정 파일도 계속 지원
- 스크립트 방식으로 네트워크를 동작
- systemctl start NetworkManager.service
- 설치: 기본적으로 설치, sudo apt install network-manager
- 실행: 시스템이 부팅할 때 자동 동작
네트워크 관리자와 작업하기
- 네트워크 설정 정보를 연결 프로필에 저장
- 사용자는 네트워크 관리자를 직접 제어하지 않고 명령 기반 도구나 GUI 기반 도구 사용(nmcli, nm-connection-editor)
- 네트워크 설정을 변경하면 네트워크 관리자가 자동적으로 인식
GUI로 네트워크 설정하기
- Gnome의 [설정] - [네트워크]: 윈도우의 제어판처럼 시스템과 네트워크 설정을 위한 기능 제공
- 네트워크 선택 시 네트워크 설정창이 뜸
- 네트워크에서 '유선' 항목의 설정을 선택 후 장치 설정창에서 IPv4 선택
- IP 주소, 넷마스크, 게이트웨이, 네임서버 등을 설정
nmcli 명령로 네트워크 설정하기
- nmcli [옵션] 명령[서브명령]: 유선 네트워크뿐만 아니라 와이파이 등 무선 네트워크, 보안 등 네트워크와 관련된 거의 모든 설정 관리 가능
- 옵션
- -t: 실행 결과를 간단하게 출력
- -v: nmcli의 버전 출력
- -p: 사용자가 읽기 좋게 출력
- -h: 도움말 출력
- 명령[서브명령]
- general {status | hostname}: 네트워크 관리자의 전체적인 상태를 출력하고, hostname을 읽거나 변경 가능
- networking {on | off | connectivity}: 네트워크 시작/종료, 연결 상태 출력
- connection {show | up | down | modify | add | delete | reload | load}: 네트워크를 설정
- device {status | show}: 네트워크 장치의 상태 출력
ip 명령으로 네트워크 설정하기
- ip [옵션] 객체 [서브명령]: 네트워크 상태 확인, IP 주소 설정, 게이트웨이 설정
- 설정한 것은 시스템을 재시작하면 사라짐
- 옵션
- -V: 버전 출력
- -s: 자세한 정보 출력
- 객체 [서브명령]
- address [add | del | show | help]: 장치의 IP 주소 관리
- route [add | del | help]: 라우팅 테이블 관리(ip-route)
- link [set]: 네트워크 인터페이스 활성화/비활성화
네트워크 인터페이스 설정 확인
- ifconfig [인터페이스명] [옵션] [값]: 네트워크 인터페이스의 IP 주소 설정
- 옵션
- -a: 시스템의 전체 인터페이스에 대한 정보를 출력
- up/down: 인터페이스 활성화/비활성화
- netmask [주소]: 넷마스크 주소 설정
- broadcast [주소]: 브로드캐스트 주소 설정
게이트웨이 설정
- route [명령]: 라우팅 테이블을 편집하고 출력
- add: 라우팅 경로나 기본 게이트웨이 추가
- del: 라우팅 경로나 기본 게이트웨이 삭제
- 게이트웨이: 다른 네트워크와 연결할 때 연결점이 되는 장치
주로 사용하는 명령 형식
- 라우팅 경로 추가(네트워크): route add -net 네트워크주소 netmask 넷마스크 dev 인터페이스명
- 라우팅 경로 추가(호스트): route add -host 호스트주소 dev 인터페이스명
- 라우팅 경로 삭제(네트워크): route del -net 네트워크주소 netmask 넷마스크 dev 인터페이스명
- 라우팅 경로 삭제(호스트): route del -host 호스트주소 dev 인터페이스명
- 기본 게이트웨이 추가: route add default gw 게이트웨이주소 dev 인터페이스명
- 기본 게이트웨이 삭제: route del default gw 게이트웨이주소
- 루프백(lo) 추가: route add -net 127.0.0.0 netmask 255.0.0.0 dev lo
DNS 설정
- DNS(Domain Name System): hostname을 IP 주소로 바꾸는 역할을 수행
- DNS가 설정되어 있지 않으면 이름으로 서버에 접속할 수 없으며 직접 IP 주소를 사용해야 접속 가능
- DNS 서버 지정
- DNS 서버의 주소를 /etc/resolv.conf 파일에 저장
- nmcli 명령으로 DNS 설정: nmcli con mode connection-name ipv4.dns [DNS주소]
- nslookup [도메인명]: DNS 서버와 대화식으로 질의하고 응답을 받음
호스트 설정
hostname 확인
- uname [옵션]: 시스템 정보 출력
- -m: 하드웨어 종류 출력
- -n: 호스트 이름 출력
- -r: 운영체제의 릴리즈 정보 출력
- -s: 운영체제 이름 출력
- -v: 운영체제 버전 출력
- -a: 위의 모든 정보 출력
- hostname [호스트이름]: hostname을 출력하거나 설정
- hostnamectl [옵션] [명령]: 시스템의 hostname을 검색하거나 설정
- 옵션 -h: 도움말 출력
- 옵션 --version: 버전 출력
- 명령 status: 현재 hostname과 관련 정보 출력
- 명령 set-hostname 호스트이름: hostname 설정
hostname 저장
- 우분투에서 hostname을 저장하는 파일: /etc/hostname
- 도메인 이름을 포함한 hostname만 저장
- 내용 수정 후 재시작 시 hostname이 유지
- hostname을 새로 정의할 때는 한 네트워크에서 같은 이름을 사용하는 다른 호스트가 있으면 안됨