HTTP GET 요청과 POST 요청의 가장 큰 차이점은 무엇이며, 이것이 요청 헤더나 데이터 전송에 어떤 영향을 미칩니까?
[답안]
GET 요청은 데이터를 URL의 일부(query string)로 전송하지만, POST 요청은 데이터를 요청 본문(body)에 포함합니다. 이 차이 때문에 요청 헤더나 데이터 전송에 다음과 같은 영향을 미칩니다.
HTTP 응답 코드 404의 의미는 무엇입니까? 그리고 서버가 요청을 처리할 수 없을 때 반환하는 HTTP 상태 코드는 무엇입니까?
[답안]
HTTP 응답 코드 404는 "Not Found"를 의미합니다. 이 코드는 서버가 요청된 리소스를 찾을 수 없을 때 반환됩니다.

서버가 요청을 처리할 수 없을 때 반환하는 HTTP 상태 코드는 500입니다. 이 코드는 "Internal Server Error"를 나타냅니다.

파일 디스크립터(File Descriptor)란 무엇인지 간단히 설명하고 UNIX/Linux 시스템에서 표준 입출력/에러의 파일 디스크립터 번호를 쓰세요.
[답안]
파일 디스크립터는 운영 체제에서 파일이나 다른 입출력 리소스에 대한 접근을 추상화하는데 사용되는 정수입니다. 파일 디스크립터를 통해 운영 체제는 파일, 파이프, 소켓 등 다양한 입출력 리소스를 일관된 방식으로 관리할 수 있습니다. 예를 들어, 파일을 열면 운영 체제는 해당 파일을 가리키는 파일 디스크립터를 프로그램에 제공합니다.
UNIX/Linux 시스템에서 표준 입력의 파일 디스크립터 번호는 0, 표준 출력은 1, 그리고 표준 에러는 2입니다.
(파일 디스크립터에 대해 정리한 포스팅을 참고하세요!)
TCP에서의 '3-way handshake' 절차를 설명하세요.
[답안]
TCP의 '3-way handshake'는 연결 설정 과정에서 사용되는 절차이다. 이 과정은 다음과 같이 세 단계로 이루어집니다.

TCP와 UDP에서 패킷 손실 시 대처 방법에는 어떤 차이가 있나요?
[답안]
TCP는 패킷 손실이 발생하면 자동으로 재전송을 시도합니다. 수신자는 받은 패킷에 대해 확인 응답(ACK)을 보내고, 송신자는 ACK를 받지 못한 패킷을 재전송합니다.
반면, UDP는 패킷 손실에 대해 자체적으로 대처하지 않습니다. UDP는 확인 응답이나 재전송 기능이 없어, 패킷 손실이 발생하면 이를 어플리케이션 레벨에서 처리해야 합니다.

다음 ANSI C 프로그램에서 출력되는 내용은 무엇인가요?
#include <stdio.h>
int main(int argc, char *argv[])
{
int x = 1, z[2] = {10, 11};
int *p = NULL;
p = &x;
*p = 10;
p = &z[1];
*(&z[0] + 1) += 3;
printf("%d, %d, %d\n", x, z[0], z[1]);
return 0;
}
[답안]
x 구하기
p = &x; 와 *p = 10; 에 따라 x 값에 10이 대입됨을 알 수 있습니다.
z[0] 구하기
z[2] = {10, 11} 이므로 z[0]은 10을 의미하고, z[1]은 11을 의미합니다.
그러므로 z[0]은 10 입니다.
z[1] 구하기
*(&z[0] + 1) += 3; 의 *(&z[0] + 1) 은 곧 z[1]을 의미합니다. 거기에 += 3을 했으므로 z[1]은 11+3 = 14임을 알 수 있습니다.
답: 10, 10, 14