일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 구현
- 프로그래머스
- 운영체제
- findById
- BFS
- flyway
- 백준
- 코테
- CPU스케줄링
- springboot
- 2178
- DB replication
- 임베디드타입
- 프로젝트
- SpringBatch
- 파이널프로젝트
- 산업은행청년인턴
- 트리셋
- 그래프탐색
- 폰켓몬
- CS
- fatch
- 외래키제약조건위반
- 컴퓨터구조
- 산업은행it
- 스케일아웃
- JPA
- 해시
- 트리맵
- Spring JPA
- Today
- Total
나 JAVA 봐라
[네트워크] 네트워크 훑어보기 본문
전공 수업 때, CS를 분명히 공부했음에도 실제로 어떻게 적용되며 어떻게 각 계층이 이어지는 것인지에 대해 유기적으로 이해하지 못했었다. 이번에 강의를 듣고 정리하는 과정을 통해 확실하게 내 지식으로 가져가보고자 한다 !
강의는 패스트캠퍼스의 '현실 세상의 컴퓨터공학 지식 with 30가지 시나리오' 를 수강했다.
https://fastcampus.co.kr/dev_online_newcomputer
현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오 초격차 패키지 Online. | 패스트캠퍼스
국내유일, 77시간 분량의 개발자를 위한 한 번에 끝내는 컴퓨터공학 (CS 지식) 강의를 확인하세요. 자료구조,알고리즘부터 디자인패턴, 클린코드까지 ! CS지식의 이론~실습뿐 아니라, 실제 실무에
fastcampus.co.kr
네트워크 계층은 크게 아래와 같이 나뉜다.
- 네트워크 액세스 계층
- LAN (근거리 네트워크)에 해당하는 계층
- 이더넷, 네트워크 장비 (로우 레벨에서 이뤄짐) 등이 쓰인다.
- 네트워크 계층
- WAN (장거리 네트워크)에 해당하는 계층
- IP, IP 주소, 라우팅 등의 개념이 나온다.
- 전송 계층
- 정보를 주고바다을 때, 안전하고 확실하게 전송하기 위해 있는 계층
- TCP, UDP 등의 개념이 나온다.
- 응용 계층
- HTTP, 웹 기술( 쿠키, 캐시,.. ) 등의 개념이 나온다.
위의 계층을 각각 학습하기에 앞서 네트워크의 구조, 프로토콜, 성능 지표 등에 대해 먼저 알아야 한다.
네트워크 거시적으로 보기
네트워크란 무엇일까?
- 컴퓨터 네트워크 : 여러 장치들이 서로 정보를 주고받을 수 있는 통신망
- ** 망 : 거미줄처럼 복잡하게 이어져있는 것 같이, 각기 다른 장비들이 각기 다른 연결지점을 바탕으로 정보를 주고 받기 때문에 ‘망’ 이라고 한다.
- 호스트 : 네트워크에 연결된 장비
인터넷이란 무엇일까?
쉽게 표현하자면 네트워크의 네트워크 이다. LAN 뿐만이 아니라, 해외와 같이 먼 거리까지 소통해야하는 경우가 있다. 이렇기 때문에 네트워크들을 또 연결한 것이 인터넷 이다.
컴퓨터 네트워크의 구성 요소
컴퓨터 네트워크를 구성하는 요소는 아래와 같다.
- 노드
- 메세지
- 간선 (통신 링크)
노드
- 종단 시스템(End system), 호스트 라고 부른다.
- 메세지를 최초로 송신, 생성하는 대상 (이미지, 이메일, 파일, 강의 등의 정보를 최종적으로 받아들이는 노드, 즉 호스트) 이다.
- 스마트폰, 노트북,… 등이 호스트가 될 수 있다. 요즘은 IoT 기술로 인해 냉장고, 워치도 호스트 될 수 있다.
- ‘주소’를 통해 위치를 특정한다. (호스트가 어딨는지, 누구인지 알기 위해 ‘주소’가 필요하다. )
- 캐스트가 가능한 이유는 주소를 통해 네트워크에 있는 호스트를 특정 지을 수 있기 때문에 메시지를 어떻게 주고 받을 지 정할 수 있다.
- 유니캐스트 : 1대1 통신 (송수신 대상이 1대 1이다.) → 친구와 이메일 주고 받기, 갠톡하기
- 브로드캐스트: 현재 네트워크에 있는 모든 호스트한테 전부 전송한다.→ ex. 공지사항
- 멀티캐스트: 네트워크의 특정 그룹에게만 메시지 전송한다.
- 캐스트가 가능한 이유는 주소를 통해 네트워크에 있는 호스트를 특정 지을 수 있기 때문에 메시지를 어떻게 주고 받을 지 정할 수 있다.
노드, 즉 호스트는 서버와 클라이언트로도 나뉠 수 있다.
서버와 클라이언트
- 클라이언트: 요청을 보내는 호스트
- 웹브라우저가 클라이언트의 역할을 한다. google.com 입력하면 웹브라우저는 구글의 서버에 구글의 홈페이지를 달라고 ‘요청’ 한다.
- 서버: 응답을 보내는 호스트
- 구글의 웹서버가 요청한 웹브라우저한테 구글의 웹페이지를 응답한다.
서버와 클라이언트를 배타적으로 생각하기 쉽지만, 호스트는 서버의 역할도 할 수 있고 클라이언트의 역할도 할 수 있다.
예를 들어 스마트폰, 노트북은 주로 클라이언트 호스트지만 서버의 역할도 할 수 있다.
(중간) 노드
- 네트워크 장비
- 라우터, 스위치, 공유기
- 호스트와 배타적인 개념은 아니다. (같은 노드이긴 하다.) 잘만 한다면 버려진 데스크탑(호스트)도 공유기처럼 사용할 수 있다.
간선 (통신 링크)
- 유선 케이블
- 광케이블 : 인터넷을 연결하는 해저 케이블 등
- 집에 있는 LAN 케이블 등
- 트위스티드 페어 케이블
- 무선
- 주파수, 무선링크, 와이파이 등
메세지
- 주고받는 정보
- 예를 들어, '패스트캠퍼스' 서버로 부터 동영상을 메시지로 받아서 강의를 듣는다. / 친구에게 이미지 메시지를 받는다.
- 웹페이지, 사진, 동영상 등이 메세지가 될 수 있다.
네트워크 구분
- LAN : 근거리를 연결한 네트워크
- 사무실 내의 컴퓨터들을 연결하거나, 가정에 있는 것들 연결하는 정도 -> 공유기를 중심으로 아빠 컴퓨터, 내 스마트 폰 등을 연결한다.
- WAN: 원거리를 연결한 네트워크
- ex) 인터넷 (네트워크의 네트워크)
그렇다고, 내가 미국까지 해저케이블을 깐 것도 아닌데, LAN에서 어떻게 WAN에 접속할까?
ISP (인터넷 서비스 프로바이더)가 WAN에 접근하기 위한 서비스를 제공한다. 즉, WAN에 접근하기 위한 ISP 회선을 제공한다.
너도 끼려면 돈 내
국내에 KT, LG U+, SK 등의 ISP 업체가 있다.
프로토콜과 캡슐화
네트워크를 미시적으로 살펴본다.
패킷 교환 네트워크
인터넷 네트워크에서는 메시지는 ‘패킷’ 단위로 주고 받는다. (= 즉, 인터넷 네트워크는 패킷 교환 네트워크를 사용한다.)
예를 들어, 2GB가 한번에 전송되는 것이 아니라 패킷 단위로 전송되고 목적지에서 다시 재조립 된다.
- 패킷 교환 네트워크 : 주고받는 정보를 패킷 단위로 주고 받는 네트워크
- 패킷 : 패킷 교환 네트워크에서 주고받는 데이터 단위
그리고 패킷을 교환하기 위해 중간 노드(= 패킷 교환기 = 패킷 스위치)가 필요하다.
패킷 스위치는 쪼개진 패킷을 어디로 전달해야하는지(= 라우팅), 패킷에 손상이 없는지 검사한다.
이 때 하나의 경로로만 한번에 전송하는게 아니라, 여러 경로로 패킷을 나눠 보낼 수 있다.
회선 교환 네트워크
메시지를 주고 받는 또 다른 방법으로 회선 교환 네트워크가 있다. 이는 패킷 교환 네트워크와 비교되는 네트워크이다.
- 회선 교환 네트워크 : 정해진 회선(circuit)으로만 통신하는 네트워크
- 사전에 연결 수립 작업이 필요하다.
- 다른 호스트는 도중에 끼어들 수 없다.
- 장점: 전송률이 보장된다. 이미 정해진 회선으로만 통신하기 때문이다.
- 단점: 회선 이용률이 저하된다. A ↔ B가 회선 교환 중이면, C가 A한테 무언가 보낼 수 없다.
현재에는 대부분 패킷 교환 네트워크를 사용한다. 패킷 교환 네트워크에서 메시지를 전송하는데 필요한 '패킷'은 무엇일까?
패킷 구성 요소
- 헤더 : 패킷에 붙일 부가 정보
- 송수신 주소, 프로토콜을 구현하기 위한 정보 등이 포함된다.
- 페이로드 : 패킷에 보낼 정보
- 실제로 전송할 내용을 포함한다.
- 트레일러: 패킷 뒤에 붙일 부가 정보
- 기본적으로는 헤더, 페이로드로만 구성이 되어있으며 트레일러는 '데이터 링크 계층'에만 사용된다.
프로토콜
- 프로토콜 : 장비 간 정보를 주고받을 규칙이나 방법
- 호스트 간에 합의된 의사소통 규칙이다. 즉, 호스트 간의 언어가 곧 프로토콜이며, 프로토콜이 통해야 정보를 주고 받을 수 있다.
- ex) HTTP, FTP 등
- 사용 예시 ) 구글 서버와 내가 사용하는 클라이언트가 합의된 의사소통 규칙인 HTTP로 정보를 주고 받기 때문에 내 웹브라우저에 구글 웹브라우저가 나타날 수 있다.
- 헤더의 내용은 프로토콜의 영향을 받는다. 즉, 프로토콜이 달라지면 헤더의 내용이 달라진다.
- ex) TCP(신뢰성, 확실한 정보가 목적)과 UDP(빠른 전송이 목적) 프로토콜의 헤더 내용이 다르다. 왜냐하면 프로토콜 목적에 따라 헤더 내용이 달라지기 때문이다. TCP 헤더에는 순서 번호, 체크섬 등 정보를 체크하여 신뢰성을 보장하기 위한 내용이 있고, UDP의 헤더에는 송,수신지 주소만 있다.
네트워크 참조 모델
- 네트워크 참조 모델: 송수신 과정을 계층으로 정형화한 모델
만약 HELLO 메시지를 보내면 송신할 때 4→1계층 지나고, 수신하는 쪽에서 1~4계층 순으로 메시지를 받는다. 즉 송신은 높은 계층에서 낮은 계층으로 수신은 낮은 계층에서 높은 계층으로 이뤄진다.
근데 예전 전공 수업 때는 네트워크 모델을 7계층으로 배웠는데 위의 모델과 어떻게 다른걸까?
OSI 모델, TCP/IP 모델
- OSI 모델 : 흔히 알고 있는 '물데네전세표응' 7계층 모델이다.
- 물리 계층: 0,1로 이뤄진 비트를 케이블, 전자파 등을 통해 주고 받는다. ( = 하드웨어 단에서 물리적으로 주고 받는다.)
- 데이터링크 계층: 오류제어, LAN 환경에서 주소(MAC)을 식별하는 등의 역할을 한다.
- 네트워크 계층: LAN 간의 통신을 할 수 있게 한다. LAN 간의 통신을 위해 인터넷을 사용한다. IP를 사용한다.
- 전송 계층: 송수신 과정에서 신뢰성 갖도록 한다. 인터넷 밖으로 나갈 때 식별 위해 port를 같이 쓴다.
- 세션 계층: 세션이라는 연결 관계를 유지한다.
- 표현 계층: 인코딩,… 등을 수행한다.
- 응용 계층: 앱 등이 실제로 등장한다. http 등을 사용한다.
- TCP/ IP 모델
- 네트워크 엑세스 계층 (물리, 데이터링크)
- 인터넷 계층 (네트워크 계층)
- 전송 계층 (전송 계층)
- 응용 계층 ( 세션, 표현, 응용 계층)
두 가지의 모델은 목적 자체가 다르다. OSI 모델은 이론적,TCP/IP는 구현에 목적을 두고 있다.
그렇기 때문에 둘을 두고 딱 비교할 순 없다!
캡슐화와 역캡슐화
- 캡슐화 : 상위 계층으로부터 내려오는 패킷을 페이로드로 삼아, 상위 계층으로부터 받은 정보에 프로토콜에 걸맞는 헤더 (혹은 트레일러)를 덧붙이는 것
- 송신 호스트 입장에서는 높 → 낮 계층, 수신 호스트는 반대로 메시지가 전송된다. 그 과정에서 캡슐화가 이뤄진다.
- 계층마다 사용되는 프로토콜이 다르다. (ex. 네트워크 계층: IP, 전송 계층 : TCP, 응용 계층 : HTTP) 그렇기 때문에 사용하는 프로토콜에 따라 헤더의 내용이 달라진다. → 즉, 사용하는 프로토콜에 따라 메시지가 전송되면서 계층이 바뀔 때 목적에 맞게 헤더가 하나씩 추가된다. (+ 데이터링크 계층에 추가되는 추가정보가 ‘트레일러’)
- 역캡슐화 : 캡슐화 과정에서 붙인 헤더( 및 트레일러)를 각 계층에서 제거하는 것. 즉 수신지 쪽에서 제거한다.
PDU
각 계층마다 전송되는 패킷을 그냥 '패킷' 이라고 부르면 어느 계층에 속한 것인지 몰라 헷갈릴 것이다. 그래서 각 계층에 있는 패킷을 부르는 용어를 PDU 라고 한다.
먼저, 패킷 교환 네트워크에서 말하는 패킷은, 계층 상관 없이 패킷 이라고 하는 것이다. 즉 네트워크 계층에서의 PDU와는 다르다.
네트워크 성능
네트워크의 성능을 나타내기 위한 여러 지표들이 있다.
트래픽
- 트래픽 : 특정 시간 동안 네트워크 내의 정보 흐름
- 얼마나 많은 패킷들이 한 순간 몰리는가? 를 나타낸다.
- 트래픽이 몰린다 → 과부하/ 오버헤드 발생
- 한 노드에 얼마나 많은 패킷이 한순간에 경유하는가?
전송 속도
- 네트워크 장비, 케이블의 성능을 말할 때 많이 사용하는 지표
- bps/Mbps/Gbps 로 표현한다.
- 기대 가능한 속도 , 즉 어느 정도의 속도까지 가능한지를 표현한다. (= 실제로 안될수도 있다.)
처리율 (Throughput)
- 실제로 전송되는 데이터 양 (‘전송 속도’보다는 더 현실적인 지표)
- 단위 시간 동안 네트워크를 통해 전송되는 데이터 양
대역폭 (bandwidth)
- 전송 매체의 두께
- 네트워크 트래픽을 수용할 수 있는 용량
- 송수신 가능한 최대 데이터 양
패킷 손실(packet loss)
- 얼마나 많은 패킷이 송수신 과정에서 손실되었는가?
- 보통 백분율로 표기한다. (%)
- ping 명령어로 패킷을 보내볼 수 있다.