조앤의 기술블로그

[대학원] 면접준비 - 네트워크 본문

Study/면접

[대학원] 면접준비 - 네트워크

쬬앤 2020. 5. 16. 12:10

q) OSI 7계층에 대해 설명하시오

OSI(Open Systems Interconnection Reference Model)

 

 

- 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 

- 이 모델은 프로토콜을 기능별로 나눈 것이다. 

- 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다. 

- '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가리키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다.

- 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어로 구현된다. 

 

1. 물리 계층(Physical layer)

2. 데이터 링크 계층(Data link layer)

3. 네트워크 계층(Network layer)

4. 전송 계층(Transport layer)

5. 세션 계층(Session layer)

6. 표현 계층(Presentation layer)

7. 응용 계층(Application layer)

 

1. 물리 계층(Physical layer)

- 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다. 

- 네트워크의 높은 수준의 기능의 논리 데이터 구조를 기초로 하는 필수 계층이다. 

- 전송 단위는 Bit이다. 

 

2. 데이터 링크 계층(Data link layer)

- 포인트 투 포인트(Point to Point) 간 신뢰성있는 전송을 보장하기 위한 계층으로 CRC기반의 오류 제어와 흐름 제어가 필요하다. 

- 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다. 

- 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다. 

- 데이터 전송 단위는 Frame이다. 

 

3. 네트워크 계층(Network layer)

- 여러 개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층. 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다. 

- 네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation / desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다. 

- 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)이다.

-데이터 전송 단위는 Datagram(Packet)이다.

 

4. 전송 계층(Transport layer)

- 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고받을 수 있도록 해주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다. 

- 시퀀스 넘버 기반의 오류 제어 방식을 사용한다. 

- 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(Stateful), 연결 기반(connection oriented)이다. (이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다.)

- 가장 잘 알려진 전송 계층의 예는 TCP이다. 

- 데이터 전송 단위는 Segment이다. 

 

5. 세션 계층(Session layer)

- 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 

- 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다. 

- 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다. 

 

6. 표현 계층(Presentation layer)

- 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어준다. 

- MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 

 

7. 응용 계층(Application layer)

- 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 

- 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다. 


q) TCP와 UDP의 차이점은?

[TCP와 UDP]

* 네트워크 계층 중 전송 계층에서 사용하는 프로토콜
* TCP(Transmission Control Protocol)
- 인터넷 상에서 데이터를 메세지의 형태(세그먼트라는 블록 단위)로 보내기 위해 IP와 함께 사용하는 프로토콜이다.
- TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리한다.
- 연결형 서비스로 가상 회선 방식을 제공한다.
: 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking을 통해 연결을 해제한다.
- 흐름 제어 및 혼잡제어를 제공한다.
: 흐름제어 ; 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버 플로우를 방지하는 것
; 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.
: 혼잡제어 ; 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
; 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.
- 높은 신뢰성을 보장한다.
-UDP보다 속도가 느리다.
- 전이중(Full-Duplex), 점대점(Point to Point) 방식이다.
: 전이중 ; 전송이 양방향으로 동시에 일어날 수 있다.
: 점대점 ; 각 연결이 정확히 2개의 종단점을 가지고 있다.
: 멀티캐스팅이나 브로드캐스팅을 지원하지 않는다.
- 연속성보다 신뢰성있는 전송이 중요할 때에 사용된다.

UDP(User Datagram Protocol)
-데이터를 데이터그램 단위로 처리하는 프로토콜이다.
- 비연결형 서비스로 데이터그램 방식을 제공한다.
: 연결을 위해 할당되는 논리적인 경로가 없다.
: 그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다.
: 이렇게 데이터를 서로 다른 경로로 독립적으로 처리한다.
- 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
- UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- 신뢰성이 낮다.
- TCP보다 속도가 빠르다.
- 신뢰성보다는 연속성이 중요한 서비스, 예를 들면 실시간 서비스(streaming)에 사용된다.

* 참고
- UDP와 TCP는 각각 별도의 포트 주소 공간을 관리하므로 같은 포트 번호를 사용해도 무방하다. 즉, 두 프로토콜에서 동일한 포트 번호를 할당해도 서로 다른 프로토콜로 간주한다.
- 또한 같은 모듈(UDP or TCP) 내에서도 클라이언트 프로그램에서 동시에 여러 커넥션을 확립한 경우에는 서로 다른 포트 번호를 동적으로 할당한다.

[TCP의 3 way handshake와 4 way handshake]
* TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다.
* 3 way handshake란
- TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish)하는 과정
- 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- 즉 TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미함

- A 프로세스(Client)가 B 프로세스(Server)에 연결을 요청
(그림)
a. A -> B : SYN
: 접속 요청 프로세스 A가 연결 요청 메시지 전송(SYN)
: 송신자가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래스 비트를 1로 설정한 세그먼트를 전송한다.
: PORT 상태 - B : LISTEN, A : CLOSED

b. B -> A : SYN + ACK
: 접속 요청을 받은 프로세스 B가 요청을 수락했으며, 접속 요청 프로세스인 A도 포트를 열어 달라는 메시지 전송(SYN + ACK)
: 수신자는 Acknowledgement Number 필드를 (Sequence Number + 1)로 지정하고, SYN과 ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
: PORT 상태- B : SYN_RCV, A : CLOSED

c. A -> B : ACK

 

 

[HTTP와 HTTPS]

[GET 메서드와 POST 메서드]

 

[쿠키와 세션]

 


q) MAC address란? IP address가 MAC address에 비해 갖는 장점은?

 

[출처]

github.com/WeareSoft/tech-interview/blob/master/contents/network.md

 

WeareSoft/tech-interview

:loudspeaker::person_frowning: tech interview. Contribute to WeareSoft/tech-interview development by creating an account on GitHub.

github.com