-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
네트워크 면접 질문 정리 #44
Comments
Application 계층HTTP 등의 프로토콜을 응용 프로그램의 UI를 통해 제공 Presentation 계층데이터를 표준화된 형식으로 변경 Session 계층세션의 유지 및 해체 등 응용 프로그램 간 통신 제어와 동기화 Transfer 계층신뢰성 있는 데이터 전달하기 위한 계층, Network 계층데이터를 송신하기 위한 최적의 경로 선택을 수행 Datalink 계층데이터 오류 검출 및 복구 수행 Physical 계층데이터를 비트 단위의 0과 1로 변환한 후 장비를 사용해 전송 |
TCP/IP란 전송계층에서 사용되는 인터넷 프로토콜 중 하나이다.
IP(Internet Protocol, 인터넷 프로토콜)
OSI 7계층을 TCP/IP에 맞게 표준화한것이 4계층이다. 응용계층
전송계층
인터넷 계층
네트워크 접근 계층, 네트워크 인터페이스 계층
|
TCP
UDP
|
가상회선방식이란, 데이터를 주고 받기 전 패킷을 전송할 경로를 가상 회선으로 미리 설정하여, 모든 패킷들이 해당 경로를 따라 전송되는 방식을 의미합니다. TCP에서 데이터를 주고 받을 때 사용되어 패킷의 전송 순서가 보장됩니다. |
TCP에서는 연결형 서비스를 지원하기 위해 송신부와 수신부를 연결하는 과정을 거칩니다.
|
|
TCP/IP는 데이터 손실이 없음을 보장한다. 특히 혼잡제어란?
다음과 같은 혼잡제어방법이 있다.
|
3 Duplicate ACK / NAK(Negative Acknowledge) / ACK을 받지못해 타임아웃 |
HTTP는 데이터 암호화를 거치지 않아 보안에 취약한 반면, |
REST는 REpresentational State Transfer의 약자로, 인터넷 상의 자원을 URI로 나타낼 수 있음을 의미합니다. |
DNS는 주로 전송계층에서 UDP를 사용합니다.. UDP는 데이터를 신속하게 전송하는 데에 중점을 둔 프로토콜로, 신뢰성 있는 데이터 전송을 보장하지 않지만, DNS의 경우에는 일반적으로 작은 데이터 패킷을 빠르게 전송하는 데에 적합한 특성을 갖고 있어 UDP를 주로 활용합니다. |
레이어를 나눔으로써 관심사가 분리된다. 상위계층의 변경사항이 하위계층까지 전달되지 않으며 이는 캡슐화를 유지하고 유지보수성을 증대시킨다. |
데이터 링크 계층에 트레일러가 붙습니다. |
프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계를 의미합니다. |
응용 계층에서는 예시)
|
로피
인터넷에서 데이터 전송을 효율적으로 하기 위해 데이터를 나눈 조각 |
MAC(Media Access Control address)은 48비트로 구성된 하드웨어 고유의 주소이다. |
인터넷 프로토콜(Internet Protocol)의 약자로, 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미합니다. |
IP 주소의 네트워크부와 호스트부를 구분하기 위해 사용됩니다. |
3 - way 핸드 셰이킹의 1단계에서 수신측에게 |
로피
Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아있을 수 있기 때문에 일단 FIN에 대한 ACK만 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메시지를 보내기 때문입니다. |
Connection을 맺을 때 사용하는 포트(port)는 유한 범위 내에서 사용하고 시간이 지남에 따라 재사용된다. 따라서 두 통신 호스트가 과거에 사용된 포트 번호 쌍을 사용하는 가능성이 존재한다. 서버 측에서는 패킷의 SYN을 보고 패킷을 구분하게 되는데 난수가 아닌 순차적인 number가 전송된다면 이전의 connection으로부터 오는 패킷으로 인식할 수 있다. 이러한 문제가 발생할 가능성을 줄이기 위해서 난수로 ISN을 설정하는 것이다. |
Domain Name System의 약자로 도메인 이름과 IP 주소를 서로 변환하는 역할을 합니다. |
둘 다 데이터를 갱신할 때 사용하는 HTTP 메서드입니다. |
객체의 속성과 행위를 하나로 묶고, 실제 구현 내용 일부를 내부에 감추어 은닉하는 것입니다.
결론적으로 상태를 잘 정의된 행동 집합 뒤로 캡슐화하는 것은 객체의 자율성을 높이고 협력을 단순하고 유연하게 만듭니다. |
로피
TCP와 UDP |
IPv4와 IPv6의 차이는 무엇인가요?
|
오류제어 / 흐름제어 / 오류제어 를 사용합니다. |
흐름제어란 데이터 송신부와 수신부에서 데이터 처리 속도의 차이 때문에 발생하는 데이터 손실을 방지하는 방법입니다. 정지-대기 방식은, 슬라이딩 윈도우는, |
혼잡제어는 송신부의 데이터 전달 속도와 네트워크 속도 차이로 데이터 손실이 발생하는 것을 방지하기 위한 방법입니다.
|
로피
TCP Tahoe초반에 느린 시작을 사용해 혼잡 윈도우 크기를 지수적으로 키웁니다. 혼잡이 발생했다고 판단되면 혼잡이 발생한 윈도우 크기의 절반을 임계점으로 설정하고 혼잡 윈도우 크기를 초기화한다. TCP Reno초반에 느린 시작을 사용하지만, 3 Duplicate ACK와 타임아웃을 구분해 대응합니다. 3 Duplicate ACK가 발생하면 혼잡 윈도우 크기를 절반으로 줄이고, 줄인 혼잡 윈도우 크기를 임계점 값으로 설정합니다. 하지만 타임아웃이 발생하면 혼잡 윈도우 크기를 1로 초기화 하고 임계점 값은 변경하지 않습니다. |
오류 제어란, TCP/IP에서 데이터에 오류 또는 유실이 발생할 때 데이터의 신뢰성을 보장하기 위해 오류를 제어하는 방식이다.
|
checksum 방식을 사용합니다. 하지만 단순히 합을 확인하기 때문에 정확한 오류 검출 방법이라고 볼 수는 없습니다. |
서버와 클라이언트와의 연결 정보를 서버에서 저장 및 관리하는 것을 세션, 쿠키는 웹 브라우저에 키와 값 형태로 저장되며, 웹 사이트에서 로그인 정보와 쇼핑몰의 장바구니 등이 그 예입니다. 세션의 경우, 서버에 값이 저장되므로 보안 면의 장점은 있으나, 접속자가 많은 경우 과부하가 올 수 있습니다. |
비공개키 (대칭키) 암호화 방식은 생성비용이 저렴하고 컴퓨터 성능을 많이 사용하지 않습니다. |
로피
URI는 인터넷에 있는 자원의 주소를 말하며 하위 개념에 URL, URN이 존재합니다. |
|
두 메서드 모두 HTTP 메서드입니다. GET은 데이터를 받기 위해 사용되며 URL에 자원의 정보가 모두 드러나기 때문에 보안에 취약합니다. |
로그인 정보가 서버에 저장되는 것이 세션 기반 인증이고, |
|
로피
인터넷은 전 세계적으로 컴퓨터 네트워크를 연결하는 대규모 네트워크의 집합체입니다. 이는 수많은 컴퓨터, 서버, 기기, 라우터, 케이블 등으로 구성되어 있으며, 이들이 정보를 주고 받을 수 있는 하나의 거대한 통신 인프라를 형성합니다. |
UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)란?
UDP 사용 예
|
두 방법 모두 클라이언트와 서버 간 연결을 유지하기 위한 방법이며 불필요한 연결과 해제의 반복을 줄일 수 있습니다. HTTP Keep Alive는 HTTP 프로토콜의 연결을 정해진 시간 동안 유지하는 방식으로 정해진 시간이 끝나면 연결을 해제합니다. TCP Keep Alive는 3-way 핸드셰이킹으로 연결된 세션을 계속 유지하기 위한 방식이며 일정 시간 동안 패킷 교환이 없으면 패킷을 던져 유지 여부를 확인합니다. 다른 계층에서 이뤄지고, 연결 유지 방식이 다릅니다. |
데이터를 송신할 때, 응용 계층에서 보안 계층으로 데이터를 보내면 데이터를 암호화하여 전송 계층으로 전달하고, 위의 데이터 암호화/복호화 과정에서, SSL/TLS는 대칭 키 암호화 방식과 공개 키 암호화 방식을 사용합니다. |
장점
이와 같은 장점과 더불어 HTTP를 기반으로 하기 때문에 별도의 인프라를 구축할 필요가 없습니다. 단점HTTP 메서드를 사용해 자원에 대한 연산을 처리하므로 동작이 한정적이라는 단점이 있습니다. |
로피
GET은 바디가 필요하지 않은 메서드지만 GET에 바디를 넣어서 올 경우 첫 번째, GET에 대한 요청이 왔을 때 바디를 무시하고 자원에 대한 데이터를 Read 할 수 있습니다. 두 번째로 GET에 바디를 넣어 요청을 보냈을 때 예외 처리를 할 수 있습니다. 마지막으로 바디가 있으면 POST와 동일하게 처리하는 경우가 있을 수 있습니다. 이런 경우에는 Read가 아니라 Create하게 처리할 것 같습니다. |
POST는 데이터를 생성할 때 사용하며, PUT은 데이터를 갱신할 때 사용한다. |
OSI 7계층 각각에 대해 설명해주세요
TCP/IP 4계층에 대해 설명해주세요
TCP와 UDP의 차이점을 얘기해주세요
가상회선방식이 무엇인지, TCP/UDP 중 어디에 속하는지 얘기해주세요
3-way 핸드셰이킹의 과정을 설명해주세요
4-way 핸드셰이킹의 과정을 설명해주세요
혼잡 제어란 무엇인가요?
오류를 인지하는 경우는 언제인가요?
HTTP vs HTTPS
REST란?
google.com을 입력하면 일어나는 일은 ??
왜 이렇게 OSI 7 계층으로 나누게 되었을까요?
OSI 7계층중 어떤 계층이 헤더와 더불어 트레일러가 붙어있을 까요? 또한 그 트레일러가 붙는 이유는 무엇일까요?
프로토콜이 뭔지 간략하게 설명해주실 수 있나요?
TCP/IP 4계층에서 각 계층 마다 데이터의 단위를 다르게 부르는데 각각 어떤게 있는지 설명해주실 수 있나요?
패킷이 뭔가요?
MAC 주소가 무엇인가요?
IP 주소가 뭔가요?
서브넷 마스크가 뭔가요?
TCP 통신 시 2번 단계의 클라이언트가 서버가 보낸 ACK+SYN를 받지 못한다면 어떻게 되나요?
TCP의 연결 설정 과정(3단계)과 연결 종료 과정(4단계)이 단계가 차이나는 이유?
초기 Sequence Number인 ISN을 0부터 시작하지 않고 난수를 생성해서 설정하는 이유?
DNS란 무엇인가?
PATCH PUT 차이
데이터 캡슐화란 무엇인가요?, 데이터 캡슐화를 하는 이유는 무엇인가요?
전송 계층에서는 주로 어떤 전송방식을 사용하나요?
IPv4와 IPv6의 차이는 무엇인가요?
TCP가 데이터 신뢰성을 보장하기 위해 어떤 방법을 사용하나요?
흐름제어는 무엇인가요? 그리고 어떤 방법이 있을까요?
혼잡제어는 무엇인가요? 그리고 어떤 방법이 있을까요?
TCP Tahoe와 TCP Reno에 대해 설명해주세요.
오류 제어는 무엇인가요? 그리고 어떤 방법이 있을까요?
UDP의 오류 검출 방법은 어떻게 하나요?
세션과 쿠키의 차이가 무엇인가요?
공개키 암호화 방식만 사용하지 않고 대칭키 암호화 방식도 사용하는 이유는 무엇인가요?
URL과 URI의 차이는 무엇인가요?
RESTful 하다는 것은 어떤 것을 의미하나요?
GET과 POST의 차이에 대해 설명해주세요.
세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.
JWT 토큰에 대해 설명해주세요.
인터넷이 무엇인가요?
UDP를 쓰는 경우는?
HTTP Keep Alive와 TCP Keep Alive를 설명해 보세요.
HTTPS에서 사용하는 암호화 방식을 설명해 보세요.
REST의 장단점을 설명해 보세요.
GET에 바디를 넣어서 보내면 나타날 결과를 설명해 보세요.
POST와 PUT의 차이점을 설명해 보세요.
같이 알아볼 질문들
The text was updated successfully, but these errors were encountered: