나의 개발일지(김지헌)
항해 99 95일차 12/22일 본문
32. TCP 3 way handshake란 무엇인지 설명해주실 수 있을까요?
- TCP 3 way handshake
- TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정
- 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- 즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
- TCP의 3-way Handshaking 과정
- A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.
- B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
- A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.
33. TCP 와 UDP 를 비교하여 설명해주실 수 있을까요?
- TCPIP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리
- TCP
- 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 연결형 프로토콜
- 특징 : 연결 지향 방식이다 / 흐름 제어 및 혼잡 제어 / 높은 신뢰성을 보장한다 / UDP보다 속도가 느리다. / 전이중, 점대점 방식
- TCP
- 연결형 서비스를 지원하는 전송 계층 프로토콜로써, 인터넷 환경에서 기본으로 사용되며 호스트간 신뢰성 있는 데이터 전달과 흐름제어를 한다. 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜입니다.
- UDP
- UDP
- 데이터를 데이터그램 단위로 처리하는 프로토콜
- TCP와 달리 비연결형 프로토콜
- 특징 : 비연결형 서비스로 데이터그램 방식을 제공한다. / 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 x / UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출 / 신뢰성이 낮으며 TCP 보다 빠르다.
- UDP
- 비연결형 서비스를 지원하는 전송계층 프로토콜로써, 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지않고 보내는쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜
34. 즐겁고 행복했던 경험을 하나 이야기해주실 수 있을까요?
35. Base64 인코딩이란 무엇인가요?
- Base64
- Binary Data를 Text로 바꾸는 인코딩 방법 중 하나로 Binary Data를 Character Set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩입니다.
- 변경 방식은 Binary Data를 6bit 씩 자른 뒤 해당 bit에 해당하는 문자를 base64 색인표에서 찾아 치환하는 방식
- Base64 Encoding을 하게 되면 전송 데이터 양 또한 약 33% 늘어나게 된다. 이유는 6bit당 2bit의 Overhead가 발생하기 때문.
- 위와 같은 문제로 ASCII 는 시스템간 데이터를 전달하기에 안전하지가 않다. 그러므로 Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 64개의 안전한 출력 문자만 사용한다.
36. 개발자가 되기로 한 이유에 대해 말씀해주실 수 있을까요?
37. 프로세스와 스레드를 비교하여 설명해주실 수 있을까요?
- 프로세스 vs 스레드
- 프로세스 : 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태, 스레드와 다르게 자원을 공유하지 않는다. 스레드 : 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위 / 하나의 프로그램은 하나 이상의 프로세스를 가지고 있고, 하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다 , 프로세스와 다르게 자원을 공유한다.
38. Call by reference란 무엇이고 보통 어떻게 쓰이나요?
참조 타입 : object, array,function
데이터의 크기가 정해져있지 않고 변수에 할당 될 때 값이 직접 해당 변수에 저장될 수 없으며 변수에는 데이터에 대한 참조가 저장이 된다 즉 변수의 값이 힙 메모리의 주소 값을 저장하는 것
주소 값을 전달하여 실제 값에 대한 Alias를 구성함으로써 값을 수정하면 원본의 데이터가 수정되는 방식
주소값을 인자로 전달하는 방식 참조에 의한 호출은 원본값의 변경이 일어날 수도 있다는 문제점이 있음
'항해 99' 카테고리의 다른 글
항해 99 97일차 12/24일 (0) | 2022.12.24 |
---|---|
항해 99 96일차 12/23일 (0) | 2022.12.24 |
항해 99 94일차 12/21일 (0) | 2022.12.22 |
항해 99 93일차 12/20일 (0) | 2022.12.21 |
항해 99 92일차 12/19일 (2) | 2022.12.20 |