본문 바로가기

tcp5

[네트워크] 전송 계층 - TCP : 연결 관리 1. 연결 관리TCP는 연결 지향 프르토콜이므로 데이터 전송 전에 handshake를 한다. 1) 2-way handshake를 하지 않는 이유client가 서버에게 connection request를 보낸다.서버는 client에게 connection accept를 보낸다.데이터 전송이 끝나고 연결을 종료한다. (서버는 클라이언트와의 연결에 대해 저장하지 않는다.) 중간에  connection accept 메세지가 늦게 도착해서 client가 재요청을 보낸게 연결 종료 후 서버에 도착한다면, 서버는 새로운 connection request라고 생각하게된다. connection 재요청이 연결 종료 후 도착하고, 그 후에 데에터 요청까지 늦게 도착한다면, 서버는 response를하게되고, garbage da.. 2025. 1. 12.
[네트워크] 전송 계층 - TCP : 신뢰성있는 데이터 전송 신뢰성있는 데이터 전송을 위한 요소 5 : checksum, ack(+nack), pipelining, sequence number, Timer  1. TCP의 신뢰성있는 데이터 전송1) 신뢰성있는 데이터 전송TCP는 IP의 unreliabl 서비스 위에 RDT(Reliable Data Transfer) 서비스를 생성합니다. (파이프라인 세그먼트, 누적 ack,  단일 재전송 타이머)재전송은 timeout 이벤트, 중복 ack에 의해 트리거됩니다. 2) TCP sender 이벤트TCP는 full duplex(전이중) 데이터 전송 방식으로, 동일 연결에서 양방향으로 데이터가 흐른다. 그러므로 Client, Server 모두 sender가 될 수 있다.TCP 전송측에서는, 앱으로부터 데이터를 받을 수도 있고.. 2025. 1. 12.
[네트워크] 전송 계층 - TCP : segment 구조 5. 연결 지향 전송 : TCP 1) TCP 특징point-to point : 한 전송측에서 한 수신측으로 전송신뢰성있는, 순차 바이트 스트림(in-order byte stream): 순서대로 전송. 어플리케이션 측에서 보면 하나의 스트림이 바이트 단위로 쭉 들어오는 것처럼 보인다. message boundaries가 없다. 데이터는 순서대로 application layer로 넘겨지며, 데이터를 byte로 처리하기 때문에 application message의 맥락을 신경쓰지 않는다.파이프라인(Pipelined) : 데이터를 버퍼에 받아서 저장, 흐름, 혼잡 제어가 window 크기를 설정한다.연결 지향 : 통신을 하기 앞서 Handshaking 과정을 통해 sender와 receiver의 상태를 확인한.. 2025. 1. 12.
[네트워크] 전송 계층 - 신뢰성 있는 데이터 전송의 5 원리 4. 신뢰성있는 데이터 전송을 위한 원칙1) 신뢰성있는 데이터 전송 매커니즘 매커니즘사용checksum전송된 패킷의 bit 오류를 찾는다.Acknowledgment수신측에서 사용하는데, 전송측에 패킷을 잘 받았다는 것을 알려주기 위해 사용된다. Ack는 프로토콜에따라 개별 패킷에 관한 것일 수도 있고, 누적된 결과에 관한 것일 수 있다.Negative Acknowledgment수신측에서 사용하는데, 전송측에게 패킷 전송이 잘못되었다는것을 알려주기위해 사용된다. Timersender가 데이터를 보낸 후 ack, nack가 올 때 까지 기다리는데, 이 때 Timer가 필요하다.Timer만큼 시간이 지나도 ack, nack가 오지 않으면 데이터가 유실됐다고 가정하고 재전송을 시도한다.이 때 받은 데이터가 또 .. 2025. 1. 12.
[네트워크] 응용 계층 Application Layer : TCP와 UDP 소켓 프로그래밍 1. Socket Programming1) 소켓 프로그래밍소켓이란? 애플리케이션 프로세스와 end-end 전송 프로토콜 사이의 인터페이스이다. 전송 서비스에서 2가지 소켓 종류이 있다.UDP : unreliabble 데이터그램TCP : reliable, 바이트 스트림 지향 2. UDP 소켓을 이용한 프로그램 1) UDP 소켓 프로그램: UDP 전송 과정에는 클라이언트-서버간 'connection'이 없다.이 말은, 데이터 전송 전 handshaing이 없다. 그러므로 각 데이터에 도착 IP주소와 포트를 붙여서 보낸다.수신된 패킷에서 IP와 포트를 추출한다.  데이터가 손실되거나, 순서에 맞지 않게 수신될 수 있다.  2) Client-Server 소켓 통신 과정서버는 서버 소켓을 생성한다.클라이언트는 클.. 2024. 12. 11.