Request Data To Server
- 서버의 개요
서버의 OS는 멀티프로세스 & 멀티스레드 기능을 통해 다수의 프로그램을 동시에 작동 가능
서버와 클라이언트의 구분
다양한 형태로 데이터 송수신을 지원하기 위해 클라이언트와 서버로 역할 구분하지 않고
좌우 대칭 형식의 송.수신 구조로 어디서나 자유롭게 데이터를 송신할 수 있도록 하는게 좋음.
소켓 연결
접속 동작시 접속 대기 소켓을 복사하여 소켓을 만듦
접속 대기 Socket과 복사되는 Socket들은 서로 같은 port번호를 갖는데 client로 부터 각각의 통신으로부터 Socket들을 구별해야함 (port 번호를 달리주면 클라이언트에서 식별이 불가능)
(1) client IP address, (2)server IP address, (3)client port number, (4)server port number 이렇게 4가지 정보로 소켓을 식별함.
여기에서 소켓을 만든 직후인 accept 상태일 때, 네가지 정보는 모르는 상태인데 이때 소켓을 식별하기 위해 필요한게 디스크립터
- 서버의 수신 동작
LAN 어댑터에서 수신 신호를 디지털 데이터로 변환
인터럽트를 통해 CPU 커널에 접근하여 패킷의 도착을 알리는 형태
CPU 작업 → LAN 드라이버로 작업 전환
패킷추출
MAC헤더의 데이터에 따라 프로토콜 판별
프로토콜에 맞는 소프트웨어 호출 ( ex. 적합한 프로토콜 스택에 패킷 전달)
데이터 크기에 따라 패킷분할 & 분할 유무에 따른 패킷 복원
접속대기 소켓을 보고 패킷 복사 & 새소켓 생성 & TCP헤더 생성 후 response(ACK패킷)
위의 4가지 정보에 맞는 소켓을 찾고
(데이터는)패킷에서 데이터를 추출해 수신 버퍼에 저장후 데이터를 분할하기 전의 상태로 되돌림
보통 패킷이 도착전에 read를 먼저 호출하고 데이터 받을 준비를 끝내서 기다리는 상태임
Last updated