csapp 3

CSAPP 11장 공부 기록 3편: HTTP, CGI, Tiny Web Server 코드로 연결하기

Dave O'HallaronTiny 코드에 대입한 흐름Accept -> doit(connfd) -> Rio_readlineb -> method == "GET" -> read_requesthdrs -> parse_uri("/home.html") -> stat("./home.html") -> serve_static -> mmap -> Rio_writen(connfd, file)13-2. 동적 콘텐츠 요청 확인동적 콘텐츠는 파일을 그대로 보내는 것이 아니라, 실행 파일을 돌린 결과가 응답이 되는 경로다. 아래 요청에서 ? 뒤의 n1=15000&n2=213은 parse_uri에서 cgiargs로 분리되고, serve_dynamic에서 QUERY_STRING 환경변수로 넘어간다.curl --htt..

CSAPP 11장 공부 기록 2편: 소켓 fd에서 커널 버퍼, NIC, DMA까지

CSAPP 11장 공부 기록 2편소켓과 커널 내부: fd에서 NIC/DMA까지1편에서는 데이터가 컴퓨터 밖에서 frame, packet, segment로 포장되어 이동하는 그림을 잡았다. 이번 글에서는 같은 일을 컴퓨터 안쪽에서 본다. 응용 프로그램이 write(sockfd, buf, n) 한 줄을 호출하면, 운영체제와 하드웨어는 실제로 무엇을 하는가?이번 글에서 다루는 것소켓은 물리적인 구멍이 아니라 커널의 소프트웨어 객체라는 점fd, FDT, VFS, socket object가 어떻게 이어지는지socket, bind, listen, accept, connect 호출 순서CSAPP helper 함수 open_clientfd, open_listenfd, RIO 함수가 무엇을 자동화하는지TCP와 UDP의 ..

CSAPP 11장 공부 기록 1편: Ethernet, Router, IP, NAT까지 네트워크 바깥세상 이해하기

CSAPP 11장 공부 기록 1편네트워크 바깥세상: 장비, 주소, 캡슐화CSAPP 11장을 처음 읽을 때 가장 먼저 막힌 지점은 소켓 코드가 아니었다. Ethernet, bridge, router, LAN, WAN, frame, packet 같은 말이 현실 장비와 바로 연결되지 않았다. 이 글은 그 혼동을 풀기 위해, 데이터가 내 컴퓨터 밖에서 어떤 이름과 포장으로 이동하는지 정리한 1편이다.이번 글에서 다루는 것클라이언트-서버 트랜잭션이 정확히 무엇인지현실 장비 기준으로 Ethernet, hub, switch, bridge, router, LAN, WAN을 구분하는 법데이터가 TCP/IP 4계층을 내려가며 어떤 헤더를 얻는지frame, packet, segment가 왜 같은 듯 다른 말인지IP는 최종 ..