| [ CnUnix ] in KIDS 글 쓴 이(By): mimosa (mimosa) 날 짜 (Date): 2002년 5월 20일 월요일 오전 11시 39분 58초 제 목(Title): [Q] TCP header 이제 unix 네트웍 코딩을 시작한 학생입니다. prefork 서버를 만들어 놓고 parent의 listen port에 요청이 들어오면 child에게 file descriptor passing 하는 방식으로 서버를 만들었는데 궁금한 점이 생겨서 질문드립니다. 여러개의 child들이 파일 디스크립터에서 데이터를 읽어와서 처리를 하잖아요. file descriptor를 쫒아가다 보면 inode단에 다다를 것 같구. 결국은 해당 포트의 queue에서 데이터를 꺼내올것 같은데 이 inode(vnode?)단에서 tcp port와 어떻게 맵핑이 되는지 궁금합니다. 질문 범위가 너무 큰가요? 그러면 제일 궁금한 것으로 폭을 좁혀서 가정 ) 클라이언트 A와 클라이언트 B가 있다. 서로 다른 서버에 있다. 둘다 같은 target서버의 같은 포트로 패킷을 보낸다. 클라이언트 A 라는 놈이 보낸 것을 child A가 받고 클라이언트 B 라는 놈이 보낸 것을 child B가 받아서 처리한다고 할때 커널은 클라이언트 A에게서 온것을 어떻게 알아서 child A에게 주고 클라이언트 B에게서 온것을 어찌 알아서 child B에게 주나요 tcp header를 보면 source port와 destination port 패어가 있는데 이것으로 알기에는 힘들지 않을까 싶어서요 만약 다른 서버에 있는 클라이언트들이 같은 포트를 사용한다면 구분을 못할 것 같습니다. 제 짐작에는 sequence넘버를 이용해서 구분할 것 같은데 A와 B의 시퀀스 넘버가 서로 겹치지않도록 사용해서 알아내는 것인 가요? 아니면 option쪽에 target application을 지칭하는 내용이 있는 것인지.. 더불어 port가 사용하는 queue도 사이즈 제한이 있을 것 같은데요 리눅스 커널 2.4대에서 하나의 포트의 queue사이즈는 어느정도 인지요? SOMAXCONN이나 /proc/sys/net/ipv4/tcp_max_syn_backlog 의 경우는 아직 접속되기 전의 syn packet에 대한 큐 사이즈 인 것 같은데요 접속이 다 된 커넥션이 사용하는 큐 사이즈는 어느정도 인지가 궁금합니다. ( 얼마나 많은 커넥션을 처리할때 패킷로스가 발생할지 궁금해서요 ) 에구 제 머리속에서 아직 개념이 다 정립되지 않은 상태에서 하는 질문이라 전혀 엉뚱한 질문이 되었을 수도 있겠습니다. 한번에 너무 많은 질문드린점 죄송하구요. 답변해주시는 분들에게는 미리 감사드립니다. 꾸벅.~ ----------------------------ooO0o-- * . ^ --o0Ooo---------------------------- 잠못들때 파도소리가 귓속에서 울릴때 우리는 잃어버린 전설을 찾아 떠나야한다 |