<Interview> 3. 네트워크 정리
by BFine1. OSI 7계층
OSI(Open System Interconnection)은 개방형 시스템(다른 기종과 통신가능)끼리의 통신 프로토콜을 의미한다.
-
OSI 7계층은 프로토콜을 기능별로 정의해서 하위 계층에 기능을 이용하고 상위계층으로는 기능을 제공한다.
OSI 7. 어플리케이션 레이어
- 사용자가 실제로 사용하고 작업하는 계층이다. 사용자와 직접적인 상호작용하는 응용프로그램이 속한다.
- HTTP , SMTP, FTP 등
OSI 6. 프레젠테이션 레이어
- 기계어를 사용자가 이해할 수 있게 번역을 담당, 인코딩이나 암호화 같은 동작이 이루어진다.
OSI 5. 세션 레이어
- 컴퓨터 또는 서버 간의 통신을 위한 통로를 세션이라고 하고 이 세션의 성립,운영,종료를 담당한다.
OSI 4. 트랜스포드 레이어
- 송신자와 수신자 사이의 안전한 전송을 담당하는 역할을 한다.(오류제어, 재전송)
- TCP, UDP / 세그먼트 단위
OSI 3. 네트워크 레이어
- 패킷(데이터)을 목적지까지 전송하는 역할을 한다. 경로지정하는 라우팅과 패킷을 전달하는 스위칭이 주요기능이다.
- IP, ARP, ICMP 등 / 패킷 단위
OSI 2. 데이터링크 레이어
- 피지컬 링크를 통해 신뢰성 있는 전달을 담당한다. 주로 오류제어(CRC), 흐름제어, MAC주소 할당
- PPP, 이더넷 등 / 프레임 단위
OSI 1. 피지컬 레이어
- 실제 케이블을 통한 통신으로 데이터를 통신하기 위한 전기신호로 바꿔주는 역할을 한다.
- 비트 단위
2. 프로토콜
컴퓨터와 컴퓨터 사이에서 데이터를 전달하기 위한 소통 규약
-
다른 기종끼리도 통신하기 위한 표준 프로토콜이 TCP/IP 이다.
가. TCP/IP
- 패킷 통신방식의 인터넷 프로토콜인 IP와 제어 프로토콜 TCP로 이루어져 있다.
3. IP
IP 주소는 네트워크 상에서 기기 들끼리 서로 인식하고 데이터를 주고받기 위한 이름과 같은 식별자역할을 한다.
네트워크 주소와 호스트 주소로 구성되어 있다. Classful 네트워크 주소와 Classless한 네트워크 주소로 구분된다.
Classful한 주소는 네트워크 비트를 8비트 16비트 24비트 ~ 로 나눈 주소를 의미한다 (A,B,C,D,E)
-
Classful한 주소 체계는 현대사회에서 수요량이 현저하게 부족하여 호스트 주소까지 네트워크 주소로 사용하여 쓰는 방식이다.
가. Subnetting
- Classful한 주소를 나누어 세분화 시키는 것을 의미합니다. Host부분 주소를 나누어 만들어진 세분화 주소를 Subnet이라고 합니다.
- CIDR(Classless Inter Domain Routing)은 Subnetting 주소를 다시 합쳐 라우팅테이블이 커지는 것을 막는 방법입니다.
나. subnet mask
- 서브넷의 네트워크 주소와 호스트 주소를 식별하기 위한 방법이다.
다. NAT & PAT
- Network Address Translation 으로 사설 ip와 공인 ip 사이에서 1:1 변환해주는 것을 의미한다.
- Port Address Translation 으로 사설 ip와 공인 ip 사이에서 N:1 변환해주는 것을 의미한다.
라. IPv6
- 32 비트 IPv4 버전의 주소고갈로 인해 만들어진 128 비트 주소 체계
- 헤더형식은 더 간결해짐 (Next Header필드 사용)
4. TCP
Transmission Control는 연결형 서비스(3way/4way handshake)를 통해 신뢰성을 제공하는 프로토콜이다.(ACK를 이용한 재전송)
-
흐름(flow)제어와 혼잡제어(Congestion)를 지원, 20바이트 헤더
가. 3way-handshake
- TCP가 데이터를 전달하기 전에 연결을 맺는 과정으로 연결요청하는 SYN 패킷을 보내고 서버는 SYN + ACK를 다시보내고 다시 ACK를 보내면 성립된다.
- 연결을 끊는 것을 4way-handshake로 클라이언트에서 FIN 패킷을 보내고 서버는 ACK를 보낸뒤 마지막으로 FIN패킷을 보내고 ACK를 받아야 연결이 끝난다.
나. Flow Control & Congestion Control
- 흐름제어는 송수신자간 속도를 조절하는 방법으로 Window의 크기를 조정해서 구현 할 수 있다.
- 혼잡제어는 송신과 네트워크간 보내는 양을 조절하여 혼잡을 피하는 방법이다.
- 타호 방식은 3-Duplicated ack를 받을 경우 window 1까지 떨어뜨린후 SS로 올리는 방식
- 레노 방식은 쓰레쉬 홀드(반정도) window를 떨어뜨린뒤 AI로 올리는 방식이다.
5. UDP
- User Datagram은 비연결형 서비스로 송수신 형태가 아닌 한쪽에서 일방적으로 보내는 프로토콜이다.
- 오버헤드(8바이트)가 적기 때문에 데이터 전달 속도가 우수하다.
- 하나의 포트에서 TCP/UCP 모두 사용 가능하다.(소켓이 다르기 때문)
6. 소켓, 포트
- 포트는 데이터를 주고 받는 프로세스를 식별하기 위해 프로세스가 할당받는 고유값이다.
- 소켓은 프로세스에서 데이터를 주고 받기 위한 창구 같은 것이다. 소켓은 IP주소, 포트넘버, 프로토콜으로 정의(Open)할 수 있다.
- 하나의 프로세스는 여러개의 소켓을 가질수가 있다. 이는 서버는 하나의 포트만 할당받는 이유이다.
7. Node, Host
네트워크에 연결된 모든 종류의 장비를 Node라고 한다.
Node에 네트워크 주소가 할당되면 Host가 된다.
-
통신은 호스트 안에 프로세스까지 데이터가 오고 가는 것을 의미한다.
가. 서버, 클라이언트
- 클라이언트는 요청을 하는 호스트를 의미하고 서버는 요청에 응답을 하는 호스트를 의미한다.
8. 라우팅 프로토콜
- 라우팅 프토토콜은 패킷의 경로를 결정하는 프로토콜이다.
- 라우팅 경로는 라우팅 테이블에 기록되고 목적지 주소와 전달을 위한 경유지가 입력된다.
- 내부라우팅(RIP,OSPF)과 외부라우팅(BGP) 두가지 방식이 있다.(IGP, EGP)
- Autonomous System이란 네트워크 관리자에 의해 관리를 받는 라우터 집단이다.(회사, 기업)
- 외부라우팅은 문지기 라우터가 AS간 라우팅을 담당하는 것을 의미하며 문지기라우터는 다른 AS의 정보를 가지고 있다.
가. OSPF
- Interior Routing Protocol(= IGP)
- Open Shortest Path First 가장 짧은 경로가 최적 경로로 선택되는 라우팅 프로토콜이다.
- 각 라우터는 자신의 경로에 변화가 생기면 다른 모든 라우터로 변화된 부분만 브로트 캐스트한다.
- 모든 라우터는 모든 링크에 대한 라우팅 테이블을 가지고 있다.
나. RIP
- Interior Routing Protocol(= IGP)
- Routing Imformation Protocol 로 Distance Vector 알고리즘 사용하는 라우팅 프로토콜이다.
- 주기적으로 인접 라우터에 라우팅 테이블을 보내고 갱신하여 최신의 라우팅 테이블을 유지한다.
- 패킷이 무한히 떠도는 것을 방지하기 위해 최대 15홉까지 갈수 있다.
다. BGP
- Exterior Routing Protocol(= EGP)
- Boarder Gateway Protocol 다른 AS간에 통신을 할때 경로를 설정하는 라우팅 프로토콜이다.
- Distance Vector 알고리즘을 사용한다.
9. 캐시
- 성능향상을 위해 나중에 또 사용할 것 같은 데이터나 값을 미리 복사해 두는 임시 저장소 및 그 데이터를 말한다.
- 캐시서버(프록시서버)는 캐시 데이터를 저장하는 서버로 응답시간단축, Access 링크로 몰리는 트래픽 분산 등 장점이 있다.
- 웹페이지를 빠르게 보여주기 위해 사용한다. 수동으로 삭제해주어야 한다.(쿠키와의 차이)
10. 쿠키 & 세션
- 쿠키는 http가 stateless protocol이기 때문에 웹에서 클라이언트들의 처리 과정에 대한 history를 유지할 수 있을 수 있도록 하는 것이 쿠키이다.
- 쿠키의 목적은 사용자 인증을 도와주는 것이고 만료기간이 있어서 자동으로 삭제된다.
- 쿠키는 사용자 컴퓨터의 하드디스크에 저장된다.
- 세션은 일정 시간동안 같은 브라우저로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술이다.
- 세션은 서버에 저장된다. 라이프사이클은 설정한 시간이 만료되거나 브라우저를 종료하는 순간 소멸된다.
11. HTTP
HyperText Transfer Protocol 웹상에서 데이터를 주고 받을 수 있게 하는 프로토콜, 주로 HTML을 주고 받는데 사용한다.
stateless하며 비연결형의 특징을 가지고 있다.(1.1 keep-alive)
GET 방식은 정보를 URI의 해더에 붙여서 데이터를 전달한다. 주로 정보를 가져올때 사용한다.
-
POST 방식은 정보를 HTTP body에 데이터를 담아서 전달한다. 주로 데이터를 변경,등록할때 사용한다.
가. SSL
- Secure Socket Layer로 웹서버와 브라우저 사이의 보안을 위한 표준 보안 방식을 의미한다.
- 대칭키 : 암복호화 할때 같은 키를 사용하는 것을 의미한다.
- 공개키 : 수신자가 자신의 키를 공개하고 송신자는 그 공개키를 이용해 암호화하고 수신자는 자신의 비밀키로 복호화한다.
- SSL은 공개키 방식으로 대칭키를 전달하고 대칭키 방법을 사용해서 데이터를 주고 받는 방법이다.
- HTTPS는 이 SSL 방식을 이용한 것으로 인증서(사이트의 공개키, 인증기관의 서명)을 필요로 한다.
- 동작과정
-
- 접속-> 서버에서 Https가 있다는 응답
-
- 포트443 으로 다시접속(클라이언트 헬로)
-
- 서버는 서버헬로를 보내고 인증서송신
-
- 클라이언트는 인증서 유효성검증 후 대칭키 생성
-
- 서버의 공개키로 대칭키 전달
-
- 대칭키로 암호화통신
-
나. HTTPS 통신 과정
-
- 웹사이트는 인증서를 얻기 위해 인증기관에 자신의 공개키와 사이트정보를 전달한다.
-
- 인증기관은 검증 후 인증기관의 비밀키로 위의 사이트 정보를 암호화해서 인증서를 만들어 웹사이트로 보낸다.
-
- 그후 인증기관은 사용자의 브라우저로 인증기관의 공개키를 전달한다.
-
- 사용자가 웹사이트에 접속 요청을 하면 웹사이트는 아까 받은 인증서를 사용자에게 전달한다.
-
- 사용자는 인증기관의 공개키로 인증서를 복호화하고 웹사이트의 공개키를 얻게 된다.
-
- 이 공개키를 이용해서 사용자의 대칭키를 암호화하고 웹사이트로 전달한다.
-
- 웹사이트는 비밀키를 이용해 사용자의 대칭키를 복호화해서 이 대칭키를 이용해서 정보전달을 하게 된다.
다. v1.1 & v2.0
- 1.1버전은 하나의 요청하고 응답을 기다리고 요청하는 방법으로 처리하기 때문에 속도가 느려 성능문제가 있었다.
- HOL(Head Of Line) Blocking, RTT 증가
- 2버전은 한커넥션에 여러개의 데이터를 한번에 처리, 클라이언트 요청없이 서버에서 필요한 리소스 제공
- 헤더는 요청(쿠키,호스트 정보등)-응답(서버정보)-일반(커넥션정보)-엔티티(메세지 타입, 인코딩)
라. 헤더 종류
-
응답헤더 : 요청에 대한 응답을 한다.
- 서버, 쿠키 정보설정, HTTP 메소드 리스트 등
-
요청헤더 : 클라이언트 요청정보를 담는다.
- Host, 클라이언트 정보(OS,브라우저),인증토큰, 쿠키정보 등
-
일반헤더 : 요청 & 응답 할때 공용으로 사용한다.
- 날짜정보(HTTP 생성관련), 클라이언트&서버 간 연결옵션 설정 등
-
엔티티헤더 : 요청 & 응답에서 모두 사용하는 엔티티에 대한 정보를 담고있다.
- 컨텐츠 타입/인코딩/Disposition(inline-화면표시, attachment-다운로드/ 등
마. HTTP 요청
- 요청행(line) : HTTP 메서드, 수신지 URI, HTTP 버전정보
- 요청헤더 : 제어정보
- 메세지바디 : 송신하려는 데이터 부분
바. HTTP 응답
- 상태행(line) : 상태코드
- 응답헤더 : 서버측 제어정보
- 메세지바디 : 결과 데이터
12. DNS
- Domain Name Server로 숫자로 되어있는 IP주소체계를 사람이 기억하는데 무리가 있기 때문에 보기 편한 언어체계로 변환하는 역할을 한다.
13. DHCP
- Dynamic Host Configuration Protocol 으로 서버에서 동적으로 클라이언트에게 IP를 할당해주는 프로토콜 이다.
-
- 클라이언트 PC가 동작하면 IP를 할당 받기 위해 모든 DHCP서버로 브로드캐스트 메세지를 보낸다.
-
- 메세지를 받은 DHCP 서버는 유니캐스트로 부여할 IP를 클라이언트 PC로 보낸다.
-
- 클라이언트는 주소를 선택한 후 다시 모든 DHCP 서버로 메세지를 보내고 서버는 ACK를 보내서 할당을 완료한다.
14. URI, URL
가. URI
- URL 상위개념, 처리, 서비스 등
나. URL
- Uniform Resource Locator 는 인터넷에서 서버 내 자원의 위치를 나타내고자 사용하는 표준적인 논리주소이다.
- 다양한 서비스를 제공하는 서버로부터 필요한 데이터를 가져오려면 이들의 위치를 표시하는 체계 가 필요한데 이것이 URL이다.
- URL은 서비스 종류,도메인네임,파일의 위치를 포함한다. [프로토콜://컴퓨터명(IP주소)/디렉터리명/파일명]
- 흔히 URL은 웹사이트주소로 알고 있지만 컴퓨터와 네트워크의 자원을 모두 나타낼 수 있다.
- 해당 주소에 연결하려면 맞는 프로토콜을 연결해야한다.(http->브라우저, Ftp->Ftp클라이언트)
15. 웹 API
- API는 반복되는 소스코드의 중복을 없애면서 표준화, 재사용성을 높이는 것이다.
- 웹 API는 네트워크를 통해 호출하는 API를 말한다.
참고 & 출처
- https://jw3461.tistory.com/4
- http://blog.naver.com/PostView.nhn?blogId=myca11
- https://blog.naver.com/myca11/221369799273
- http://m.blog.daum.net/jjun850116/235
- https://opentutorials.org/module/1832/10705
- http://www.koreaidc.com/13_special/web_cashing.html
- https://zorba91.tistory.com/entry/
- https://jeong-pro.tistory.com/80
- https://ko.wikipedia.org/wiki/HTTP
- https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network
- https://soul0.tistory.com/372
- https://webdir.tistory.com/161
- https://medium.com/@shlee1353/http1-1-vs-http2-0
- http://www.ktword.co.kr/word/abbr_view.php?m_temp1=3790
- https://gmlwjd9405.github.io/2019/01/28/http-header-types.html
- 구정은의 한걸음 자바
- 실전 네트워크와 네트워크 보안 실무
'공부(2018~2019) - 스킨변경전 > Interview' 카테고리의 다른 글
<Interview> 6. 기타 정리 (0) | 2019.03.25 |
---|---|
<Interview> 5. 운영체제 정리 (0) | 2019.03.06 |
<Interview> 4. 자료구조 정리 (0) | 2019.03.05 |
<Interview> 2. Spring 정리 (0) | 2019.03.04 |
<Interview> 1. JAVA 정리 (0) | 2019.03.02 |
블로그의 정보
57개월 BackEnd
BFine