Search
🔵

bc9.3__1. title: TCP 클라이언트와 서버는 소켓이라는 별명을 가진 파일을 생성하고, 해당 파일에 값을 쓰거나 읽는 방식으로 통신한다는 착각하도록 만든다.

생성
🚀 prev note
♻️ prev note
9_2. title: 추상이란 복잡도와 오해가능성 사이의 트레이드오프가 있는 도구이다.
bb8.1_1__1. title: 유닉스(UNIX)와 유닉스 계열(‣)운영체제에서는 터미널에 출력하는 작업이나 디스크에 값을 쓰는 작업이나 모두 파일에 쓰는 작업으로 본다. 이 접근법과 그 장점은 1973년 톰프슨의 논문에서 찾을 수 있다.
bc9__1. title: 네트워크를 통한 데이터 송수신이 일어나는지 확인할 수 있는 도구로 netstat, ping, telnet 이 있다.
🚀 next note
14 more properties
TCP 클라이언트와 서버는 소켓이라는 별명을 가진 파일을 생성하고, 해당 파일에 값을 쓰거나 읽는 방식으로 통신한다고 착각하도록 만든 것이다. 많은 사람들이 ‘소켓은 파일이다’ 라고 생각하지만, 실제로는 그렇지 않다. 이렇게 사람을 착각하게 만들지만 소켓 프로그래머 입장에서 그러한 관점은 복잡성을 크게 감추어 준다는 점에서 소켓을 파일로 여기는 것은 훌륭한 추상화다. 정리하면, 소켓의 정체가 실제로 파일이라는 것이 아니다. 파일에 값을 쓰듯 소켓에 값을 쓰면 네트워크 너머의 컴퓨터가 파일의 값을 읽듯 소켓에 작성된 값을 읽어들일 수 있다는 것이다.
소켓 프로그래밍을 구현하는 C 소스코드를 살펴보자. 클라이언트와 서버는 통신을 위해 각각 socket() 함수를 이용해 소켓과 소켓에 값을 읽고 쓸 수 있도록 파일 디스크립터를 얻는다. 하지만 클라이언트는 소켓을 원격지의 주소에 연결하기 위해 connect() 함수를 사용하고, 서버는 소켓을 로컬 주소에 연결하기 위해 bind() 함수를 사용한다(참고1).
파일에 값을 쓸 때에는 파일에 쓸 수 있는 값의 형태로 변환해야 한다. 쓸 데이터를 직렬화하기 위해 endode() 함수를 사용한다. 이렇게 직렬화된 형태로 파일에 쓰여진 값을 다시 읽을 때에는 읽을 데이터를 역직렬화하기 위해 decode() 함수를 사용한다.
parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.
1.
from : 과거의 어떤 생각이 이 생각을 만들었는가?
1.
4.
netstat명령어 출력에서 소켓을 어떻게 확인할 수 있는지 궁금하다면 참고하라.
supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?
1.
opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?
1.
None
to : 이 문서에 작성된 생각이 어떤 생각으로 발전되고 이어지는가?
2.
참고 : 레퍼런스