Alpha Company
로그인
Alpha Company
로그인
네트워크 프로그래밍 CH5. 에코 서버/클라이언트
Alpha, Orderly
·
2023년 3월 21일
팔로우
0
네트워크 프로그래밍
0
네트워크 프로그래밍
목록 보기
6/19
에코 서버?
클라이언트가 전송한 문자열을 그대로 다시 보내주는 서버
무슨 문제가 있을까?
TCP는 데이터의 경계가 없는 프로토콜이다.
즉, 한번 서버에서 read함수를 한번 실행했을때, 반대편에서 한번의 write로 보낸 문자열을 읽지 않고
여러번 보낸것을 한번에 받거나, 한번 보낸걸 부분만 받아올수도 있다!
클라이언트에서의 해결
클라이언트는 자신이 받을 문자열의 사이즈를 완벽하게 알고있다!
클라이언트 코드
recv_len 을 통해 읽어온 길이를 측정한다.
읽어올때는 메시지에서 읽어온 만큼 건너뛰고 그 뒤에 받는다.
str_len : 받아와야 하는 메시지의 크기
자신이 필요한 만큼 받아올때까지 read 해 올수 있다!
TCP 이론
슬라이딩 윈도우 사용 가능해진다
입출력 버퍼
TCP 소켓에 각각 존재하며, 소켓 생성시 자동으로 생성된다.
소켓을 닫아도 출력버퍼의 데이터는 전송된다.
소켓을 닫으면 입력버퍼의 데이터는 사라진다.
연결 / 전송 / 종료
연결
연결은 3-way handshaking 을 사용한다!
전송
전송은 아래와 같이 이루어진다.
특정 SEQ 번호를 가진 데이터 전송한다.
잘 받았고 다음에 받을 SEQ 번호를 가진 ACK 돌려줌.
종료
종료시 4-way handshaking으로 이루어진다.
서로 FIN - FIN/ACK를 주고받아 일방적인 종료가 되지 않도록 방지한다.
Alpha, Orderly
만능 컴덕후 겸 번지 팬
팔로우
이전 포스트
네트워크 프로그래밍 CH4. TCP/UDP
다음 포스트
네트워크 프로그래밍 CH6. UDP 서버 - 클라이언트
0개의 댓글
댓글 작성