[OS] TCP 송수신 Deep Dive
2023. 10. 20. 17:56
Operating System
본 포스팅에서는 Naver D2의 "TCP/IP 네트워크 스택 이해하기" 문서와 RFC 793(Transmission Control Protocol)를 참조해서 TCP에 대해 살펴보겠습니다. TCP(Transmission Control Protocol)란? 우선 TCP는 어떤 성격의 프로토콜인지 살펴보겠습니다. TCP의 특성 Connection oriented TCP는 통신하기 위해 우선 프로세스 간 연결(connection)을 맺어야 합니다. RFC 문서는 connection을 다음과 같이 정의합니다. The reliability and flow control mechanisms described above require that TPCs initialize and maintain certain sta..
[OS] sendfile 시스템 콜과 kafka zero-copy
2023. 8. 24. 17:37
Operating System
File.read(fileDesc, buf, len); Socket.send(socket, buf, len); 위 코드는 디스크의 데이터를 네트워크를 통해 전달하는 코드입니다. 구체적인 내부 동작원리는 다음과 같습니다. 운영체제가 디스크상의 파일을 읽어 데이터를 커널 공간(kernel space)의 읽기 버퍼(read buffer)에 저장합니다. 애플리케이션은 읽기 버퍼에 저장된 데이터를 사용자 공간(use space) 버퍼(application buffer)로 읽어 들입니다. 애플리케이션은 사용자 공간 버퍼로 읽어 들인 데이터를 소켓 버퍼에 씁니다. 운영체제는 소켓 버퍼의 데이터를 NIC(Network Interface Card) 버퍼에 복사합니다. 해당 데이터는 네트워크를 통해 전송됩니다. 디스크상의..