IP가 있는 이유는 컴퓨터를 구별하는 역할 패킷을 주고받기위해 쓰이며 32비트로 만들어져 있다. IP주소에 같은 네트워크인지 알수있게 해주는 역할을 netmask가 해주고 IP와 netmask를 &연산 하여 동일 네트워크에 IP를 구분해 준다.
gateway는 나와 다른 네트워크 주소로 패킷을 보낼때 사용한다.
IP, netmask, gateway의 구조 이해
ip는 컴퓨터를 구별하기 위한 주소로 네트워크 주소와 호스트 주소로 구성되어 있다. 예를 들어 ip주소가 199.199.199.10인 컴퓨터와 199.199.199.11인 컴퓨터가 있을때 앞의 199.199.199은 네트워크 주소로 같은 네트워크 에 있음을 나타내주고 끝자리 10 과 11은 호스트 주소로 컴퓨터를 구별해주는 역할을 한다. 이렇게 구별을 하기 위해서는 서브넷마스크가 꼭 필요한데 199.199.199.10와 199.199.199.11의 subnetmask는 255.255.255.0으로 같은 네트워크에 위치 했음을 나타내주고 네트워크 주소와 호스트 주소를 나누는 기준으로 쓰인다. ip주소는 32비트로 이루어져 있고 #.#.#.#의 한칸에 8비트씩 들어가 있는데 0~255까지 총 256개가 들어가 있다. 만약 ip주소가 199.199.199.0 ~ 199.199.199.255 / 255.255.255.0의 ip주소를 사용한다면 같은네트워크 주소를 가진 호스트가 256개가 있을 수 있다. 이런 내부 ip주소를 외부 ip주소와 통신을 할때는 gateway를 사용하는데 gateway는 완전히 서로 다른 네트워크 주소로 패킷을 보낼때 사용한다. 이 gateway는 브리지나 라우터에 있으며 내부 ip주소는 패킷을 gateway를 통해 라우터로 전달하고 라우터는 외부 ip주소로 패킷을 전달하는 역할을 한다.
Network Interface Card 유닉스 시스템들은 각 시스템마다 NIC를 지칭하는 디바이스 파일명이 고유하다. 리눅스의 경우 ens32, ens34(eth0, eth1)… 등의 이름으로 명명한다. 네트워크 관련 명령어 : net‐tools 패키지에 포함된 - CentOS7 Minimal 설치에 포함되어 있지 않음 # yum install –y net‐tools 디바이스 파일 /lib/modules/3.10.0‐693.el7.x86_64 /kernel/drivers/net 경로에 리눅스에서 지원하는 모든 네트워크 디바이스 파일이 존재한다.
ifconfig 네트워크 인터페이스 상태를 확인 하거나 설정을 변경한다. 변경 내용은 영구적이지 않다. # ifconfig # ifconfig [NIC명] # ifconfig [NIC명] [IP] netmask [mask명] [up|down]
네트워크 설정 파일 /etc/sysconfig/network‐scripts/ifcfg‐NIC명 ‐> 네트워크 설정 : IP, subnetmask, gateway … /etc/resolv.conf ‐> DNS Server /etc/hostname ‐> 호스트명
추가 설정 파일 /etc/sysconfig/network ‐> 호스트명, gateway, NOZEROCONF=yes
/etc/sysconfig/network‐scripts/ifcfg‐ens32
TYPE=Ethernet BOOTPROTO=[static/dhcp/bootp/none] DEVICE=nic명 UUID=UUID명 ONBOOT=[yes/no] IPADDR=IP PREFIX=Subnet Mask GATEWAY=gateway 주소 DNS1=dns 서버 주소
/etc/resolv.conf search [default 도메인명] nameserver [DNS 서버 IP] ifcfg‐ens32 파일과 다른 설정인 경우 재 부팅하면 ifcfg‐ens32 파일의 내용을 기준 으로 재구성된다. named 서버 test시에 임시 설정은 이 파일을 이용한다. /etc/sysconfig/network NOZEROCONF=yes Zero Configuration Networking을 위하여 예약된 subnet 설정을 제거한다. 반드시 필요한 옵션은 아니다.
네트워크 재시작 # systemctl [stop | start | restart] network 파일을 수정한 이후에는 반드시 네트워크를 재 시작 해야 한다. NM(Network Manager)가 활성화 되어 있는 경우 설정은 반드시 NM을 이용한다. CentOS6 이전 버전 # service network [stop | start | restart]
ping : 특정 호스트까지의 연결과 대상 시스템의 작동여부를 확인한다. ping ip
netstat : 네트워크의 이름과 시스템의 연결상태, 포트, 인터페이스등의 상태와 통계정보를 확인해서 네트워 크 상태 진단하는 프로그램 # netstat [옵션] 옵션 ‐i : 인터페이스 상태 확인 ‐s : IP, ICMP, TCP, UDP 에 대한 패킷 통계정보 ‐nr : 라우팅테이블 확인
NetworkManagerrk 실행 중일때 nmtui를 이용해서 네트워크 설정이 가능하다. 설정 전에 NetworkManager 서비스를 시작한다. # systemctl start NetworkManager.service [프로그램] – [시스템 도구] – [설정] – [네트워크] 메뉴에서 설정한다. 이전 버전에서는 system‐config‐network을 통해서 설정 가능했다. 변경 내용이 즉시 적용된다. NM이 활성화된 경우 파일 편집이나 ifconfig 명령에 의한 설정 변경이 불가한 경우가 있다.
ntsysv : 부팅시에 서비스 실행을 켜고 끌 수 있다.
라우터 netstat 시스템의 연결상태, 포트, 인터페이스등의 상태와 통계정보를 확인해서 네트워 크 상태 진단하는 프로그램 # netstat [옵션] 옵션 ‐i : 인터페이스 상태 확인 ‐s : IP, ICMP, TCP, UDP 에 대한 패킷 통계정보 ‐nr : 라우팅테이블 확인
Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 ens32 = 모든 ip는 gateway에 보내라 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 ens32 = 같은 네트워상에 있는 컴퓨터는 ens32로 보내라
unicast : 1:1통신, 받는 쪽을 기준으로 하고 Sender(src)와 destination(dst)주소가 특정 node나 host의 주소 인 경우
broadcast : 1:N 통신, dst 주소가 불특정 다수인 패킷 FF:FF:FF:FF:FF:FF, IP 마지막 주소 등의 경우
multicast : 1:N 통신, 대상이 미리 지정한 그룹인 경우
Ethernet : bus형의 대표적인 형식, Link layer에 해당하며 CSMA/CD방식
성능 : 일정 수준 이상으로 node가 증하하면 각 node가 사용가능한 대역폭이 줄어든다.
Total packets : 정상적 패킷의 양 / of node : 컴퓨터 대수
A와 B는 패킷의 양이 같고 컴퓨터 대수가 다르다 그러나 A 지점에서 완만하게 오르는 이유는 패킷의 양이 그만큼 여유가 있는 것이고 B 지점에서 급격하게 하락하는 이뉴는 콜리전발생이 급격하게 발생해서 그렇다.
해결방법으로는 토탈패킷의 양을 늘리거나 네트워크 장비 규격을 바꿔 장비를 늘리면 되는데 복잡하고 비용이 많이 드는 단점이 있다. 그래서 네트워크를 분할해 주어야 하는데 리피터,브릿지, 라우터 방법을 이용한다.
리피터 : 신호를 증폭하는 physical 장치 현재엔 거의 사용을 하지 않는다.
브릿지는 Mac address 기반으로 Learning, Filtering, Fowarding, flooding, aging의 5가지 기능이 있다.
A가 B에게 데이터를 전송할때 Multiple Access로 B 뿐만아니라 1번포트를 통해 브릿지에게 전달이 되고 A의 맥어드레스를 보고 A의 위치를 브릿지 테이블에 저장하는데 이것을 Learning이라고 한다. 이때 브릿지는 A가 보내는 것을 알지만 B의 위치를 알지 못하여 2번 포트로 D,E,F PC에게 데이터를 보내게 되는데 이것을 Flooding 이라 한다. B가 A에게 데이터를 전송한다면 마찬가지로 1번포트를 통해 브릿지에게 데이터가 전달된다. 브릿지는 B의 맥어드레스를 보고 B가 1번포트에 위치했다는 것을 알고 A에게 데이터를 전송하는 것을 알면 다른 포트로는 데이터를 보내지않는데 이것을 Filtering이라고 한다. A,B,C,D,E,F의 맥어드레스 주소가 브릿지 테이블에 입력되있는 상태에서 A에서 E에게 데이터를 전송한다면 브릿지는 1번포트로 A에게 데이터를 받아 2번포트를 통해 E에게 정확하게 보내는데 이것을 Forwarding이라고 한다.
맥어드레스 = node / ip = host 이며 넷마스크는 ip주소를 구분해 준다. ip는 나와 네트워크 주소가 같은 것 끼리 통신하며 다르면 통신하지 않는다. 자신과 다른 네트어크 주소를 갖는 호스트에 패킷을 보내는 경우 이를 대신해주는 시스템 즉 외부와 연결된 시스템이 필요한데 이를 게이트웨이라고 한다. 게이트웨이역할은 라우터나 공유기가 담당한다.
ip는 아무렇게나 쓰는게 아닌 최상위 기관이 할당받을 기관에게 규모에 맞게 나눠서 주는 방법을 쓰고 있다.
주소마다 클래스로 나누는데
a 클래스 : 0.0.0.0 ~ 127.255.255.255 128개(126개), 0~, 127~ 는 할당안해줌
1.0.0.0 ~ 1.255.255.255.255 256^3개
b 클래스 : 128.0.0 ~191.255.255.255 64*256개
130.23.0.0 ~ 130.23.255.255 ->256^2개
c 클래스 : 192.0.0 ~ 223.255.255.255 32*256^2개
203.248.252.0 ~ 203.248.252.255 -> 256개
경기도 파주시 문향로 11 520동 5230호 ----------------------------------------- ------- 동네주소 집주소
00000000.00000000.00000000 00000000 ------------------------------------------ ---------- 네트워크 주소 호스트주소
1.1.1.0
Netmask는 IP 32bit중에 1로 마킹된 부분까지 네트워크 주소임을 의미한다. 넷마스크를 적어야 ip 어드레스로 의미가 있다.
ln : link 파일 생성 (soft , hard) # ln [옵션] 원본파일 링크파일 옵션 -s : 소프트 링크 생성 (디렉토리의 경우 soft link만 가능) -f : 대상이 존재하는 경우 지우고 link파일 생성 ex) # ln -s a.txt b.txt 소프트링크 파일의 경우 원본파일이 지워지면 사용할 수 없는 파일이 된다. 하드파일의 경우 원본파일이 지워져도 사용이 가능하다.
명령어 ln
원본파일을 삭제하여 링크파일의 경우 빨갛게 표시가 된다.
more(less) : 화면 출력을 화면 단위로 제어, 출력되는 내용이 많아서 화면을 넘어가는 경우 사용 # more 파일 | : 앞 명령의 결과를 뒤 명령의 입력 값으로 이용 # ls -al | more grep : 필터링, 출력 문자열중에 원하는 단어나 글자가 들어있는 라인만 출력하고자 할때 이용 command | grep ex) ls -al | grep conf
명령어 grep
head, tail : 파일의 일부분을 출력, 각각 앞 뒤에서 10 라인씩 출력 옵션 -n ## : 지정한 라인만큼 출력 -c ## : 지정한 byte 만큼 출력 -f : tail에서만 사용, 실시간 추가되는 내용도 출력 주로 log 정보 확인 시 사용 함
명령어 head, tail
find : 파일 시스템에서 조건에 만족하는 파일을 검색한다. #finb 검색경로 검색조건1 검색조건2... -name : 파일명으로 검색(와일드카드문자 사용) -perm : 특정 퍼미션을 가진 파일 검색 -empty : 크기가 0인 파일 검색 find 명령 에러 find: paths must precede expression:..... -name 옵션 사용시 문자열을 인식하지 못하는 에러이다. 이런 경우 문자열에 ' '를 추가한다. find / -name *.txt -------> find / -name '*.txt'
명령어 find와 검색조건
vi 에디터
vi 실행 vi 에디터는 반드시 파일명을 추가해서 실행한다. # vi 파일명 vi의 모드 Windows용 에디터와는 달리 에디팅하는 모드와 이를 편집하는 모드가 다르다. ‐ 명령모드 : 입력이 외의 편집작업 ‐ 입력 모드 : 데이터 입력 및 수정 ‐ 실행 모드 : 파일 저장, 종료
명령 모드에서 삽입 모드로 변경 i : 커서 위치부터 입력 a : 커서 다음 칸에 입력 o : 커서 아래 새로운 라인을 삽입하고 입력
I : 커서가 위치한 라인 맨 앞에 입력 A : 커서가 위치한 라인 맨 뒤에 입력
명령 모드에서 실행 모드로 변경 : 삽입, 실행 모드에서 명령모드로 변경 [ESC] 삽입 모드에서 실행 모드로 직접 변경은 불가능하다.
이동 h, j, k, l (왼쪽,아래,위,오른쪽) gg, G (문서 맨 처음이나 아래로) nG (n 라인으로 이동) ^f, ^b, ^d, ^u (화면단위 이동) 삭제 x (글자 삭제) dd (라인 삭제) dw (단어삭제) D (커서뒷부분 삭제)
검색 /문자열 n (검색상태에서 순방향으로 재 검색, /와 동일) N 환경 설정 :set [환경변수] [값] 환경변수 nu (라인번호 표시) sm (반대 괄호 표시)
:wq (저장 후 종료 ) :q! (저장하지 않고 종료 ) :w [파일명] (저장 또는 지정한 파일명으로 내용저장) ‐ 새 이름으로 저장하는 방법은 Windows와 다름으로 주의한다. 익숙하지 않은 사용자의 경우 가능한 사용하지 않는 것이 좋다.
VMware에 만든 리눅스를 사용하기 위해 기초적인 리눅스 명령어를 배웠다. 명령어를 배우기 앞서 강사님께서는 네트워크 구조에 대해 자세하면서도 쉽게 알려주셨다. 지난 시간에 사용한 파일 질라 같은 프로그램들을 Ftp프로그램이라 부르고 서버와 클라이언트에 대해 이해를 할 수 있었다. 서버는 종업원이라는 뜻으로 서비스를 제공하며 클라이언트는 고객으로 이 서비스를 제공받는 자로 이해를 할 수 있었다.
프로그램에서 서버로 메세지가 전달되는 과정
프로그램은 메세지라는 데이터를 TCP로 보내고 TCP에서는 그 메시지에 보내는 프로그램의 포트 넘버와 받을 프로그램의 포트 넘버를 붙여 Segmant를 만들어 IP에게 전달하고 전달받은 IP는 Segment에 보내는 아이피 주소와 받는 아이피 주소를 붙여 Datagram을 만들고 이더넷에 보낸다. 전달받은 것을 보내는 이더넷의 번호와 받는 이더넷의 번호를 붙여 Frame을 만들어 받아야 할 이더넷에게 전달한다. 수신받은 이더넷은 Frame을 보고 자신의 MAC주소와 비교한뒤 자신에게 보낸게 맞으면 IP에게 Datagram을 전달하고 IP에서도 누가 보낸 거며 자신에게 보낸 것인지 확인하고 맞으면 Segment를 TCP에게 전달하고 TCP에서는 포트 넘버를 확인하고 수신받아야 할 프로그램이 있으면 그 프로그램에게 최종적인 '메시지'를 전달한다.
레이어들 간에는데이터 주고 받기만 가능하고 책임 추정성으로 누가 잘못했는지 명확하게 구분이 가능하다고 한다.애플리케이션(프로그램)이 TCP에게 전달하고 더 이상은 관여하지 않고 각 레이어마다 할 일만 하고 관여는 하지 않는다.트랜스포트는 데이터가 안전하게 전달하게 해주며(데이터가 손상되었는지 확인하고 보내줌)네트워크는 컴퓨터가 가지고있는 주소를 써줌 패킷을 만들어서 이더넷에 주고링크는 데이터를 주고받는다.
대표적으로 가장 많이 사용되는 패킷망 네트워크는 Bus형으로 복잡한 장비 없이도 구성되며 가성비가 매우 우수하다. 이것을 Ethernet이라 고 한다.
그밖에 star형, ring형등이 있는데 start형은 비싸며 전화국에서 사용 atm 등으로 사용하고 ring형은 데이터 진행방향 정해져 있어 군대나 대단위 병원 등에서 사용이 된다.
CSMA/CD ( Carrier Sense Multiple Access with Collision Detect)
CSMA/CD의 데이터 전송방식
Carrier Sense : 네트워크에 흘러가는 정상패킷 흘러가는 데이터가 있는지 확인 Multiple Access : 누구한테 가는지 통제하지 않는다 Collision Detect : 깨진데이터 ( 전송했는데 다른 쪽에서도 전송을 해버려서 데이터가 깨짐 )
CSMA/CD는 데이터가 오고가는 회선이 1차선인데 어느 곳에서도 데이터가 이동하지 않은 상태에서 데이터를 전송해야 원활하게 PC간 데이터 전송이 가능하지만 어느 한 곳에서 데이터를 보낼 때 다른 곳에서도 데이터를 보낸다면 데이터끼리 손상이 나는 것을 방지하기 위해 Carrier Sense를 하고 그 데이터는 어떤 PC에게 가는지 통제를 하지 않는다. 데이터에는 개인 PC의 IP주소를 담고 있어서 자신에게 보낸 데이터가 아니면 바로 버려버리기 때문에 이 방식을 쓴다.
예로 100메가바이트의 네트워크를 쓰는 방에 PC가 10대가 있으면 10대가 균등하게 10메가바이트씩 쓰는게 아니라 동시에 사용할수록 대역폭이 줄어 점점 속도가 느려진다고 한다. 전날 파일 질라에 올려둔 파일을 모든 학생들이 받으려고 했을 때 느려진 것을 예로 들 수가 있었다.