CRUD : Create(생성), Read(읽기), Update(갱신), Delete(삭제)
서버랑 클라이언트를 잘 다루는 데에 익숙해져야한다.
OS와 NIC(자원)를 이어주는 것이 socket이고 그에 달려있는 것이 port.
bind(), listen()에서 받음.
udp : listen()이 없다. tcp보다 조금 더 직관적 / listen() 함수가 없기 때문에 내가 원할 때 받을 수 있다.
udp는 자체가 경량화가 되어 있기 때문에 사용시 정보가 누락되는 것은 감수해야한다. (하지만 빨랐죠?)
네트워크는 순서를 맞춰서 보내줄 의무가 없다. (내가 지정할 수 없다. 시스템의 역할)
tcp는 순서가 달라지면 행동을 멈추고, 다시 보내달라는 신호를 보냄.
프로토콜 종류 | tcp | udp |
연결 방식 | 연결형 | 비연결형 |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔 수 있다. |
수신여부 확인 | 수신 여부를 확인한다. | 수신 여부를 확인하지 않음 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
UDP와 TCP는 같은 포트번호를 사용할 수 있다. (사용하는 리소스가 다르다.)
코드를 실행했을 때 방화벽이 뜬다 = 네트워크에 제대로 진입을 했다는 뜻.
UDP는 버프 사이즈가 넘어가도 그냥 통째로 넘겨준다. ethernet에서 잘라서 받음.
TCP는 명확하지 않음.
'오류가 뜨는 것도 아닌데 왜 안될까..' → 이럴 때 필요한 게 디버깅
왜 안 돼. 왜. 왜 안되냐고.