핵심 개념들
[DOD]
user- 커널(TCP,IP)-sw(드라이버)-hw
server process 와 DOD 사이에 socket (읽어줘 써줘~등등 명령, process가 socket에게 operate) ⇒ RWX(받다보내다실행)
순서 정리(2MB 사진을 clinet 로 보내는)
server computer
client computer
알파 속도 > 베타 속도 === 정상
알파 속도 < 베타 속도 === 성능저하, 사진이 그려지는 게 끊겨보임
TCP:2MB 메모리를 할당해야지 가 아니라 50KB 만큼 할당함(2MB를 저 크기로 잘라서 메모리공간에 채워 넣는다. ⇒ 잘린 조각들이 청크, 다 채워지면 버퍼 안 채워지면 메모리/ 버퍼를 채우는 중일때 걸리는 게 버퍼링)
~점심시간
IP : 패킷 핸들링
패킷: 세그멘트를 인캡슐레이션하는것이다
packet이라는 상자를 준비하고 그 안에 세그멘트 하나하나를(머리를 넣은 상자, 꼬리를 넣은 상자 ..) 넣음. → 배송 준비 끝, 트럭을 부름
이 상자들을 택배차(frame)에 넣을거임
배송중
택배 상자를 다른 프레임으로 옮기는 과정 (여러 허브를 경유하며 트럭을 갈아탈것임(하얀트럭~노란트럭 등등). = 프레임이 사라졌다가 나타났다가 반복하며 트럭을 갈아타고 n번 프레임까지 감)
클라이언트 컴퓨터 이야기
마지막 택배차는 클라이언트에 도착, 상자를 내려서 상자를 열고 그 안에 있는 걸 꺼낸다
패킷을 까는 것=디캡슐레이션 ,클라이언트 IP가 이 세그멘트(붕어빵의 머리)를 TCP가 머리를 담을 공간을 확보해서 올림(클라이언트 TCP 버퍼 사이즈=윈도우사이즈). 이것이 10MB 이런식으로 딱 맞는 게 아니고, 충분한 공간 확보(유동적으로 결정). 그러면 TCP가 그걸 적재한다. 이 버퍼에 담기는 순간 실제 서버에 올리면서(TCP가 하는 게 아니라, 서버가 알아서 가져간다.) 동시에 ok 사인이 이어짐
—> 여기까지 오면 첫번째 세그멘트 옮긴것.
client가 server network 한테 ack 2를 보냄. 순서보장 (UDP와의 차이점, wait가 생겨서 느리긴 함. wait왜 하냐면 클라이언트 버퍼에 남은 사이즈 체크하고 ack(ok사인)를 보냄 )
이 클라이언트 버퍼에서 순서대로 적재되는 걸 또 위로 올린다 (프론트 화면에 그리던지, 적재를 하던지 .. 이 속도가 wait → ack 를 거치는 그 속도보다 느리면 느려짐)
왜 느려질까? 대부분 파일 사이즈가 커서.