자바(Java) - 네트워크 프로그래밍 (TCP, UDP)

Jan 08, 2024
자바(Java) - 네트워크 프로그래밍 (TCP, UDP)

TCP, UDP

  • TCP 통신
    • Transmission Control Protocol
    • 보안, 신뢰성 중시
    •  
  • UDP 통신
    • User Datagram Protocol
    • 전송속도, 효율성 중시
    • 보통 인간에게 보낼 때만 가능
    •  
       

TCP를 이용한 통신

notion image
💡
스트림 : 끝이 없는 바이트를 흘려보내는 관이라고 생각하자.
 
버퍼가 꽉 차지 않으면 파일이 소비하지 않는다.
즉, OS가 가져가지 않는다.
 
flush는 write에 저장된 값을 출력함과 동시에 비워주는 역할이다.
flush 하는 순간 스트림이 열린다.
 
notion image
💡
segment데이터를 쪼개면서 헤더에 번호, 바디에 데이터를 저장한다.
 
패킷은 segment 하나씩 출발지IP목적지IP가 붙여져있다.
 
패킷프레임이라는 차에 태워 가까운 라우터(패킷포워드장치)로 보낸다.
가까운 라우터에 도착하면 프레임을 버리고 다시 가장 가까운 목적지IP를 찾아서 새 프레임을 타고 보낸다.
즉, 패킷의 IP주소를 보고 동적으로 결정한다.
 
패킷이 목적지IP에 도착하면 패킷 도착여부를 확인하기 위해 ACK(acknowledgement code)를 사용한다.
만약 도착하지 않았다면 재전송한다.
 
모든 segment들이 위와 같은 과정을 거친다.
그리고 segment 재조립을 하여 파일(소켓)에 보낸다.
그럼 Read버퍼가 읽고 프로그램에 도착한다.
 
Share article

stwin755